繁体   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