[英]Ruby net/ssh hangs with specific host
我有一個問題,如果我要創建到特定主機的ssh連接,該連接將掛起而不會超時。 我嘗試從Rails控制台外部的同一台計算機連接到該主機,並且它可以正常工作,因此我假設這與路由/防火牆無關。 我還可以確認我在不同的地方還有其他幾台具有完全相同的OS配置的主機,並且它們可以正常工作。
這是在調試模式下運行Net::SSH.start
時的日志:
ssh = Net::SSH.start("1.2.3.4", "user", password: "password", verbose: :debug)
2014-02-27 13:17:43 +0100 [DEBUG] establishing connection to 1.2.3.4:22
2014-02-27 13:17:43 +0100 [DEBUG] connection established
2014-02-27 13:17:43 +0100 [INFO] negotiating protocol version
2014-02-27 13:17:43 +0100 [DEBUG] remote is `SSH-2.0-OpenSSH_4.3'
2014-02-27 13:17:43 +0100 [DEBUG] local is `SSH-2.0-Ruby/Net::SSH_2.6.8 i686-linux'
2014-02-27 13:17:43 +0100 [DEBUG] read 704 bytes
2014-02-27 13:17:43 +0100 [DEBUG] received packet nr 0 type 20 len 700
2014-02-27 13:17:43 +0100 [INFO] got KEXINIT from server
2014-02-27 13:17:43 +0100 [INFO] sending KEXINIT
2014-02-27 13:17:43 +0100 [DEBUG] queueing packet nr 0 type 20 len 1620
2014-02-27 13:17:43 +0100 [DEBUG] sent 1624 bytes
2014-02-27 13:17:43 +0100 [INFO] negotiating algorithms
2014-02-27 13:17:43 +0100 [DEBUG] negotiated:
* kex: diffie-hellman-group-exchange-sha1
* host_key: ssh-rsa
* encryption_server: aes128-cbc
* encryption_client: aes128-cbc
* hmac_client: hmac-sha1
* hmac_server: hmac-sha1
* compression_client: none
* compression_server: none
* language_client:
* language_server:
2014-02-27 13:17:43 +0100 [DEBUG] exchanging keys
2014-02-27 13:17:43 +0100 [DEBUG] queueing packet nr 1 type 34 len 20
2014-02-27 13:17:43 +0100 [DEBUG] sent 24 bytes
此時,ssh連接剛剛掛起,可以像這樣保持15-30分鍾。 不幸的是,我沒有任何錯誤消息或任何消息,因此我對問題可能是什么一無所知。
一些規格:
ruby-2.0.0-p0
rails (3.2.13)
net-ssh-2.8.0
日志中的IP地址不是故意的真實IP。
關於這個問題可能有什么建議嗎? 還是我可以簽出的其他日志或地方? 我在SO之外發現了類似的問題,但沒有找到解決方案,所以我想在這里問...
我通過減少最大傳輸單位 (MTU)來解決。 我的環境是一些特定情況。 我正在嘗試從VMware虛擬機到Openstack實例使用ssh。 Openstack需要較小的數據包通過使用 fog的kitchen-openstack通過NET :: SSH連接。 不知道這是否適合您,但是請嘗試以下命令(假設在Ubuntu中):
檢查您的MTU
須藤netstat -i
您將獲得類似以下的輸出,在第二列中,您可以檢查MTU:
Iface MTU滿足RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 9658 0 0 0 308 0 0 0 BMRU
lo 16436 0 12952 0 0 0 12952 0 0 0 LRU
對於網絡接口eth0,您可以嘗試將MTU從1500降低到例如1400,如下所示:
須藤ifconfig eth0 mtu 1400
試試net ssh
ssh = Net :: SSH.start(“ 1.2.3.4”,“ user”,密碼:“ password”,詳細::debug)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.