通过PHP与Amazon EC2实例的SSH连接
尝试使用.pem文件、PHP和phpseclib连接到AmazonEC2实例 我尝试过这篇文章中提到的内容: 然而,我不断得到“错误111。连接被拒绝在…” 当我使用ssh和相同的.pem文件从自己的机器连接时,没有错误 以下是我使用的原始帖子中的代码:通过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
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获得任何回复