【问题标题】:ssh access to ec2 from phpssh 从 php 访问 ec2
【发布时间】:2012-01-29 08:16:06
【问题描述】:

从本地 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);
?>

【问题讨论】:

  • apache用户有没有写proxy2temp1文件的权限?另外,您确定错误消息是正确的吗?我在任何地方都看不到“proxy23”主机名,只有“proxy2”。
  • 如果你在命令行中输入那个 ssh 命令,你能连接成功吗?好像是你的机器没有proxy2在哪里或者它的IP地址是什么?
  • sam 作为 proxy23 输入错误
  • james 我可以从命令行连接。当我从终端运行 php 脚本时,这个 php 会执行罚款。当我尝试通过 apache 执行时,抛出这样的错误......
  • 我怀疑这是权限问题,因为 ssh 没有抱怨权限。它无法将 proxy2 解析为 IP 地址,这意味着浏览器环境使用的 DNS 解析器配置与您的命令行环境不同。

标签: php linux shell ssh amazon-ec2


【解决方案1】:

**终于找到了使用phpseclib的解决方案,解决了我的问题。我推荐 phpseclib 从 php uing .pem 文件连接亚马逊 ec2 机器,以帮助其他人分享我的示例代码。

确保 .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');

【讨论】:

  • SSH进入实例后,如何发起http请求?
猜你喜欢
  • 2012-06-03
  • 2013-08-14
  • 1970-01-01
  • 2019-03-04
  • 2012-09-10
  • 1970-01-01
  • 2011-09-17
  • 2016-09-19
  • 1970-01-01
相关资源
最近更新 更多