从php对ec2的ssh访问

从php对ec2的ssh访问,php,linux,shell,ssh,amazon-ec2,Php,Linux,Shell,Ssh,Amazon Ec2,从本地ubuntu linux机器通过ssh访问连接ec2机器 当我从终端运行这个php脚本时,它执行得很好,并将尾部条目写入文件中。当我从浏览器运行时,apache错误日志中出现了此错误 ssh:无法解析主机名代理2:名称或服务未知 发现它是由于apache用户权限问题。我不确定我的猜测是对还是错。任何人都可以帮助我解决这个问题 php代码:- <?php $ss = 'ssh proxy2 '.'tail -n 3 /out/speed_log.txt.1'.' > proxy

从本地ubuntu linux机器通过ssh访问连接ec2机器

当我从终端运行这个php脚本时,它执行得很好,并将尾部条目写入文件中。当我从浏览器运行时,apache错误日志中出现了此错误

ssh:无法解析主机名代理2:名称或服务未知

发现它是由于apache用户权限问题。我不确定我的猜测是对还是错。任何人都可以帮助我解决这个问题

php代码:-

<?php

$ss = 'ssh proxy2 '.'tail -n 3 /out/speed_log.txt.1'.' > proxy2temp1';
system($ss);
?>

**终于找到了使用phpseclib的解决方案并解决了我的问题。我建议phpseclib从phpuing.pem文件连接AmazonEC2机器,以帮助其他人共享我的示例代码

确保.pem文件需要读取权限**

示例代码:

include('Net/SSH2.php');
include('Crypt/RSA.php');

$key = new Crypt_RSA();

$key->loadKey(file_get_contents('/pathtokey.pem'));


$ssh = new Net_SSH2('ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com');
if (!$ssh->login('user', $key)) {
exit('Login Failed');
}

echo $ssh->exec('tail -n 3 /out/_log.txt.1');

apache用户是否具有写入proxy2temp1文件的权限?另外,您确定错误消息是正确的吗?我在任何地方都看不到“proxy23”主机名,只有“proxy2”。如果在命令行中键入该ssh命令,可以成功连接吗?似乎您的机器不知道proxy2在哪里,或者它的IP地址是什么?sam键入的proxy23james错误,我可以从命令行连接。当我从终端运行php脚本时,这个php执行罚款。当我尝试通过apache执行时,会抛出这样的错误……我怀疑这是权限问题,因为ssh没有抱怨权限问题。它无法将
proxy2
解析为IP地址,这意味着浏览器环境使用的DNS解析程序配置与命令行环境不同。在SSH到实例中后,如何发出http请求?