Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过PHP与Amazon EC2实例的SSH连接_Php_Ssh_Amazon Ec2_Phpseclib - Fatal编程技术网

通过PHP与Amazon EC2实例的SSH连接

通过PHP与Amazon EC2实例的SSH连接,php,ssh,amazon-ec2,phpseclib,Php,Ssh,Amazon Ec2,Phpseclib,尝试使用.pem文件、PHP和phpseclib连接到AmazonEC2实例 我尝试过这篇文章中提到的内容: 然而,我不断得到“错误111。连接被拒绝在…” 当我使用ssh和相同的.pem文件从自己的机器连接时,没有错误 以下是我使用的原始帖子中的代码: include('Net/SSH2.php'); include('Crypt/RSA.php'); $key = new Crypt_RSA(); $key->loadKey(file_get_contents('/pathtok

尝试使用.pem文件、PHP和phpseclib连接到AmazonEC2实例

我尝试过这篇文章中提到的内容:

然而,我不断得到“错误111。连接被拒绝在…”

当我使用ssh和相同的.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');
}

显然需要检查的是,端口是否已打开并允许您的用户使用

试着做:

wget ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com:22
从给你带来麻烦的机器上,看看你能不能打开插座


我想您可能需要使用shell_exec()通过PHP运行该命令,以确保它被相同的用户/安全设置调用。

我刚刚测试了提供的示例代码,它可以与我的Amazon EC2 Ubuntu实例一起使用

您必须按照建议检查明显的问题:

  • 主机名
  • 用户名
  • PEM文件路径
他们说得对吗?您确定使用的是从您自己的计算机连接时使用的相同设备吗


如果它们是相同的,您是否在测试来自同一台机器的代码?如果没有,运行代码的主机是否为出站连接打开了端口22?

我非常确定所有这些明显的基础都已涵盖。需要注意的是,这是专门针对运行CentOS的FMS实例的。我不确定这是否有区别。出站端口问题似乎确实值得检查。将在检查后返回。根据我的主机,端口22对出站连接是开放的。然而,奇怪的是,我可以通过我的终端(本地机器)打开SSH连接,但php(主机)通过phpseclib的NET_SSH2或直接通过phpseclib使用的fsockopen命令报告相同的错误111。看起来这是一个特定于主机的问题,一个错误通知的支持人员第一次响应了我。端口22被hostgator防火墙阻止。这可能会对将来的人有所帮助:在使用shell_exec运行wget时,我无法从PHP获得任何回复