2012-05-21 236 views
3

嘗試使用.pem文件,PHP和phpseclib連接到Amazon EC2實例。通過PHP連接到Amazon EC2實例的SSH連接

我已經試過什麼在這篇文章中提到: 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'); 
} 

回答

4

我剛剛測試了提供的示例代碼,它與我的Amazon EC2 Ubuntu實例一起工作。

你必須檢查明顯的提議:

  • 主機名
  • 用戶名
  • PEM文件路徑

他們是正確的嗎?你確定你使用的是與你自己的機器連接時使用的相同的嗎?

如果它們是一樣的,你是從同一臺機器測試代碼嗎?如果沒有,那麼您運行代碼的主機是否已經打開了用於出站連接的端口22?

+0

我非常肯定所有這些明顯的基礎都被覆蓋了。需要注意的是,這是專門針對運行CentOS的FMS實例的。不知道這是否有所作爲。出站端口問題似乎值得檢查。檢查後會回來。 – user883210

+0

根據我的主機,端口22是打開的出站連接。但奇怪的是,我可以通過終端(本地機器)打開SSH連接,但php(主機)通過phpseclib的NET_SSH2或直接通過phpseclib使用的fsockopen命令報告相同的錯誤111。 – user883210

+1

看起來像是一個特定於宿主的問題,第一次有一位誤會的支持人員迴應我。端口22被hostgator防火牆阻止。這可能有助於未來的人:http://support.hostgator.com/articles/how-to-enable-fsockopen – user883210

0

顯而易見的事來檢查,是打開的端口,並允許你的用戶?

嘗試只是在做:

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

在隨即給你的麻煩的機器,看看你是否可以打開插座。

我想你可能需要通過使用shell_exec()通過PHP運行該命令,以確保它被相同的用戶/安全設置調用。

+0

運行wget shell_exec時,我無法從PHP獲得任何回覆 – user883210

相關問題