SSH 无法连接 - 操作超时

fsi*_*vic 4 ssh ubuntu-14.04 osx-yosemite

由于今天上午试图连接到我的远程当我收到以下错误消息的Ubuntu 14.04 LTS通过机器sshMacBook Air的约塞米蒂10.10.1

ssh_exchange_identification: read: Operation timed out
Run Code Online (Sandbox Code Playgroud)

使用-vvv标志时,会出现以下详细消息

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 102: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to XXX.XXX.XXX.XXX [XXX.XXX.XXX.XXX] port 22.
debug1: Connection established.
debug1: identity file /Users/felix/.ssh/id_rsa type -1
debug1: identity file /Users/felix/.ssh/id_rsa-cert type -1
debug1: identity file /Users/felix/.ssh/id_dsa type -1
debug1: identity file /Users/felix/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
ssh_exchange_identification: read: Operation timed out
Run Code Online (Sandbox Code Playgroud)

几个月来,这种连接工作得非常好。我从来没有遇到过任何问题。其他解决方案,例如在此处此处找到的解决方案并没有帮助。

有关如何解决此问题的任何建议?

Ken*_*ter 7

debug1: Local version string SSH-2.0-OpenSSH_6.2
ssh_exchange_identification: read: Operation timed out
Run Code Online (Sandbox Code Playgroud)

根据您的调试跟踪,您正在设法连接到远程 SSH 服务器,并且服务器没有断开连接,但服务器没有发送其软件标识字符串。这是客户端和服务器完成的第一件事,并且以明文形式完成。

我认为问题将归结为以下三件事之一:

  1. 您和服务器之间的某些网络设备正在干扰连接。例如,如果远程主机在 NAT 路由器后面,则端口 22 的端口转发可能设置错误并且您连接到了错误的服务。

  2. 远程主机上的 SSH 服务器程序可能挂起或出现故障。我见过这种情况发生,例如当主机严重过载或虚拟内存不足时。或者服务器可能正在使用TCP 包装器之类的东西,并且它正在对您的客户端 IP 进行 DNS 查询,这需要很长时间才能解析。

  3. 远程主机以不寻常的方式设置,在端口 22 上运行的服务不是 SSH 服务器。

如果您可以访问服务器,请将故障排除集中在那里。找到 ssh 服务器的日志——它们应该在里面/var/log,看看它是否记录了有关这些失败的连接尝试的任何信息。尝试从服务器运行 ssh 到 localhost,看看它是否正常工作。

如果您对服务器具有 root 访问权限,则可以尝试启动调试实例sshd以查看客户端连接时记录的内容。停止普通sshd服务器,然后在根终端窗口中运行/path/to/sshd -d. 这将运行 sshd 的副本,它将接受一个连接并将调试信息打印到终端窗口。查看是否可以重现该问题,然后检查服务器记录的内容。

如果你不能让普通的 ssh 服务器离线,你可以在另一个端口上运行 sshd:/path/to/sshd -p 42 -d在端口 42 上运行一个 sshd 的副本。运行 ssh 客户端时指定相同的端口号:ssh -p 42 user@host。如果您的问题是由干扰网络设备引起的,这可能与连接到端口 22 的行为不同。