[英]How to run CLI commands in PHP on another server using SSH?
我正在尝试在 PHP 中但在不同的服务器上运行 CLI 命令。 为了在另一台服务器上运行命令,我使用了 linux ssh
命令。 为了在 PHP 中运行 CLI 命令,我使用exec()
。
这工作...
$output = exec('cut -d: -f1 /etc/passwd'); //works!
这适用于从一台服务器的命令行到另一台...
ssh my.otherserver.com "date"
但是,当我尝试在 PHP 中执行此操作时,它不起作用...
$output = exec('ssh my.otherserver.com "date"'); //does not work!
我正在尝试做的可能吗? 我该怎么做呢? 提前致谢。
要使用 ssh 连接到您的服务器,您需要使用ssh2_exec
php 函数。
我建议你使用phpseclib ,它是 PHP SSH 实现的包装器
ssh2_connect 或 phpseclib
您可以使用 ssh2_connect 或 phpseclib。 在我的 EC2 实例上,我必须为 ssh2_connect 安装包(例如 yum install php56-pecl-ssh2-0.12-5.15.amzn1.x86_64),因为默认情况下它不存在。 注意:这也可以用 bash 脚本来完成。
<?php
//ssh2_connect:
$connection = ssh2_connect('localhost', 22);
ssh2_auth_password($connection, 'user', 'password');
$stream = ssh2_exec($connection, 'ls -l > /tmp/worked.txt');
//phpseclib:
include('Net/SSH2.php');
$ssh = new Net_SSH2('www.example.com');
$ssh->login('username', 'password') or die("Login failed");
echo $ssh->exec('command');
进一步阅读:
要求:
sudo apt install php-ssh2
此示例将从远程 php 服务器接收ls -ltrapR
的输出。
#!/usr/bin/php
<?php
$con=ssh2_connect('223.245.xx.xx', 22);
ssh2_auth_password($con, 'root', 'bybyDRRxxxx');
$shell=ssh2_shell($con, 'xterm');
$stream = ssh2_exec($con, 'ls -ltrapR');
stream_set_blocking($stream, true);
$out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($out);
请注意,因为它只是使用基本身份验证(Fine trought ssl,最好使用 vpn)。 它可以进一步与被securised加密密钥和其他人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.