我在通过 SSH 连接到远程主机时遇到问题。我已将问题范围缩小到本地主机,因为其他客户端每次都会进行名义(快速且稳定)的连接。
尝试通过 SSH 连接到remotehost.example.net
fromlocalhost
将超时,但大约十分之一的尝试会超时(它挂在此处,然后超时):
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
我通过任何其他协议(例如HTTP
,HTTPS
BitTorrent 等)访问都没有任何问题。
中唯一有效/未注释的行/etc/ssh/ssh_config
是:
ServerAliveInterval 120
Run Code Online (Sandbox Code Playgroud)
我还能去哪里看?我还可以使用哪些其他调试工具(我能想到的就是运行ssh -vvv
)?
我尝试tcpdump
在尝试连接时在远程主机上运行,但无法弄清楚如何从运行的 tcpdump
shell 中过滤数据包,从而无限循环地向自己发送垃圾邮件,从而无法进行任何有用的诊断。
更新 1:值得注意的是,我已经能够在第二台 SSH 主机以及 IRC 服务器上复制此行为,从而证明(在我看来)这完全是本地主机上某些配置中的问题。
更新 2:还值得注意的是,虽然我的本地主机在这些出站连接方面遇到问题,但其他客户端(包括在我的 LAN 上)对任何相同的远程主机或任何其他主机都没有任何问题。再次,让我相信这只是本地主机中的一些配置问题(但也许我错了?)。
更新 3:我已从 localhost 删除 openssh 包(和配置)并重新安装,但无济于事。
如果本地计算机上的 CPU 负载较高,则可能会发生超时,几年前我有时也遇到过这个问题。我当时的备份进程确实吃掉了我的 IO + cpu。
由于我连接的服务器是 GPRS,因此设计速度很慢,因此我没有立即认为本地主机有问题。
此外,正如您所说,您可以使用的连接可能有限。
我个人会用wireshark之类的东西检查数据包。
归档时间: |
|
查看次数: |
9193 次 |
最近记录: |