2013-01-17 23 views
0

使用ssh2_connect構建的項目從服務器下載文件。項目正在運行的生產服務器正在運行,但讓ssh2_connect在運行OSX 10.8的Mac上工作證明是有問題的。PHP + SSH我該如何解決:「錯誤:ssh2_connect():啓動SSH連接時出錯(-4):收到無效的MAC?」

以下命令:

ssh2_connect("myhost", 22); 

產生以下錯誤:

Error: ssh2_connect(): Error starting up SSH connection(-4): Invalid MAC received 

我可以通過命令行連接,所以我知道這是不是一個系統範圍SSH問題。有誰知道如何調試或解決這個問題?在此先感謝,並可能你的孩子與大的大腦和社會技能:)祝福

UPDATE:解決方案下面貼

+0

您是否嘗試過使用OpenSSL 或類似工具從命令行打開連接?你知道這些證書實際上會起作用嗎? – Sahal

+0

是啊,Sahal,我會說「我可以從命令行連接」。謝謝。 – David

+0

以下鏈接我給出的是有幫助的? – Sahal

回答

1

的PHP文檔有一個提供第三個參數的例子。這篇文章的作者http://phing.tigris.org/ds/viewMessage.do?dsForumId=1083&viewType=browseAll&dsMessageId=3022056#messagefocus(Derek Gallo)有完全相同的問題,他能夠指引我走向正確的方向。謝謝德里克。似乎有些發行版需要額外的參數。最後,我將我的代碼轉換爲使用phpseclib,因爲它是一個不需要任何特殊模塊的純PHP解決方案。

$methods = array(
    'kex' => 'diffie-hellman-group1-sha1', 
    'client_to_server' => array(
    'crypt' => '3des-cbc', 
    'comp' => 'none'), 
    'server_to_client' => array(
    'crypt' => 'aes256-cbc,aes192-cbc,aes128-cbc', 
    'comp' => 'none')); 

ssh2_connect("myhost", 22, $methods);