【问题标题】:SSH Connection to Amazon EC2 Instance Via PHP通过 PHP 与 Amazon EC2 实例建立 SSH 连接
【发布时间】:2012-05-27 13:52:57
【问题描述】:

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

我已经尝试过这篇文章中提到的内容: ssh access to ec2 from php

但是,我不断收到“错误 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');
}

【问题讨论】:

    标签: php ssh amazon-ec2 phpseclib


    【解决方案1】:

    我刚刚测试了提供的示例代码,它适用于我的 Amazon EC2 Ubuntu 实例。

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

    • 主机名
    • 用户名
    • PEM 文件路径

    它们是正确的吗?您确定您使用的与从您自己的机器连接时使用的相同吗?

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

    【讨论】:

    • 我很确定所有这些明显的基础都包括在内。需要注意的是,这是专门针对运行 CentOS 的 FMS 实例。不确定这是否会有所作为。出站端口问题似乎确实值得检查。检查后会回来。
    • 根据我的主机,端口 22 对出站连接是开放的。然而奇怪的是,我可以通过我的终端(本地机器)打开一个 SSH 连接,但是 php(主机)通过 phpseclib 的 NET_SSH2 或直接通过 phpseclib 使用的 fsockopen 命令报告相同的错误 111。
    • 看起来这是一个特定于主机的问题,第一次回复我时有一个错误的支持人员。端口 22 被 hostgator 防火墙阻止。这可能对将来的某人有所帮助:support.hostgator.com/articles/how-to-enable-fsockopen
    【解决方案2】:

    很明显,要检查的是端口是否打开并允许您的用户使用?

    试着做:

    wget ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com:22
    

    从给你带来麻烦的机器上看看你是否可以打开套接字。

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

    【讨论】:

    • 使用 shell_exec 运行 wget 时,我无法从 PHP 得到任何回复
    猜你喜欢
    • 2013-01-06
    • 1970-01-01
    • 2015-01-24
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 2020-03-13
    • 1970-01-01
    相关资源
    最近更新 更多