簡體   English   中英

Ruby net / ssh與特定主機掛起

[英]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需要較小的數據包通過使用 fogkitchen-openstack通過NET :: SSH連接。 不知道這是否適合您,但是請嘗試以下命令(假設在Ubuntu中):

  1. 檢查您的MTU

    須藤netstat -i

  2. 您將獲得類似以下的輸出,在第二列中,您可以檢查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

  3. 對於網絡接口eth0,您可以嘗試將MTU從1500降低到例如1400,如下所示:

    須藤ifconfig eth0 mtu 1400

  4. 試試net ssh

    ssh = Net :: SSH.start(“ 1.2.3.4”,“ user”,密碼:“ password”,詳細::debug)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM