如何调试偶发的出站连接超时?

Chr*_*son 5 ssh timeout

我在通过 SSH 连接到远程主机时遇到问题。我已将问题范围缩小到本地主机,因为其他客户端每次都会进行名义(快速且稳定)的连接。

尝试通过 SSH 连接到remotehost.example.netfromlocalhost将超时,但大约十分之一的尝试会超时(它挂在此处,然后超时):

515 chris@localhost ~ $ ssh -vvv remotehost-root
OpenSSH_6.4, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /home/chris/.ssh/config
debug1: /home/chris/.ssh/config line 43: Applying options for remotehost-root
debug1: Reading configuration data /etc/ssh/ssh_config
debug2: ssh_connect: needpriv 0
debug1: Connecting to remotehost.example.net [123.123.123.123] port 12345.
^C
Run Code Online (Sandbox Code Playgroud)

localhost是一个最新的 Arch 系统:

517 chris@localhost ~ $ uname -a
Linux localhost 3.12.1-1-ARCH #1 SMP PREEMPT Thu Nov 21 08:18:42 CET 2013 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

我使用 SSH 配置文件作为别名,remotehost如下所示:

521 chris@localhost .ssh $ cat ~/.ssh/config
...
host remotehost-root
  HostName remotehost.example.net
  User root
  Port 12345
  IdentityFile ~/.ssh/remotehost-root.id_rsa
...
Run Code Online (Sandbox Code Playgroud)

这是最近出现的问题,但不幸的是我不记得对任何相关内容进行过更改。我不知道要检查什么。

也许值得注意的是,这会影响所有SSH 连接(例如 git over ssh 和SFTP),而不仅仅是命令行 SSH 工具。

remotehost.example.net我通过任何其他协议(例如HTTPHTTPSBitTorrent 等)访问都没有任何问题。

中唯一有效/未注释的行/etc/ssh/ssh_config是:

ServerAliveInterval 120
Run Code Online (Sandbox Code Playgroud)

我还能去哪里看?我还可以使用哪些其他调试工具(我能想到的就是运行ssh -vvv)?

我尝试tcpdump在尝试连接时在远程主机上运行,​​但无法弄清楚如何从运行的 tcpdumpshell 中过滤数据包,从而无限循环地向自己发送垃圾邮件,从而无法进行任何有用的诊断。


更新 1:值得注意的是,我已经能够在第二台 SSH 主机以及 IRC 服务器上复制此行为,从而证明(在我看来)这完全是本地主机上某些配置中的问题。


更新 2:还值得注意的是,虽然我的本地主机在这些出站连接方面遇到问题,但其他客户端(包括在我的 LAN 上)对任何相同的远程主机或任何其他主机都没有任何问题。再次,让我相信这只是本地主机中的一些配置问题(但也许我错了?)。


更新 3:我已从 localhost 删除 openssh 包(和配置)并重新安装,但无济于事。

Den*_*lte 4

如果本地计算机上的 CPU 负载较高,则可能会发生超时,几年前我有时也遇到过这个问题。我当时的备份进程确实吃掉了我的 IO + cpu。

由于我连接的服务器是 GPRS,因此设计速度很慢,因此我没有立即认为本地主机有问题。

此外,正如您所说,您可以使用的连接可能有限。

我个人会用wireshark之​​类的东西检查数据包。