我正在尝试在网络上的 Ubuntu 计算机上设置 Web 服务(使用 Play Framework)。但是,我经常遇到连接失败的情况,经常无法连接。
一个奇怪的症状是,这些网络问题也会影响 SSH,特别是无论我是从另一台 Linux 计算机还是使用 PuTTY 从 Windows 连接到该计算机,该计算机的 SSH 主机密钥都会发生变化。一系列事件似乎是这样的:
- 过了一会儿,我能够再次通过 SSH 连接到机器。
- 我访问网络服务器上的一个页面。有用。我尝试访问另一个页面。它失败。
- 此后不久,我的 SSH 连接被终止。
- 我尝试通过 SSH 登录 - 无法建立连接。
- 过了一会儿,我尝试通过 SSH 登录 - 主机密钥已更改。我接受更改并尝试登录,但我的密码收到“访问被拒绝”的消息。
- 过了一会儿,我能够再次通过 SSH 连接到机器。
刚才我接受了密钥更改,尝试登录,在输入密码之前就断开了连接,重新连接后才发现密钥再次更改了。
什么可能导致 SSH 主机密钥发生变化?如果这是 SSH 服务器响应某种奇怪行为的正常功能,那么这意味着什么类型的问题?
答案1
这绝对不正常。根据您的症状,我认为您遇到了 IP 地址冲突。您的网络上有两台具有相同 IP 地址的计算机,其中一台是您尝试访问的服务器。有时,当您到达预期的机器时,一切都很好。有时,您到达另一台具有不同 SSH 密钥的计算机时,您的连接会被拒绝。
当存在 IP 地址冲突时,路由器通常会锁定到一个 IP 地址的路由,直到缓存过期,然后再次查询该路由并更新它以匹配最先响应的路由,从而产生一定程度的随机结果。没有什么可以阻止在 TCP 连接过程中发生切换。
当 IP 冲突发生时,复杂的路由器会发出警报,因此您的网络管理员可能已经在跟踪这一情况。如果您是服务器的 root,则可以通过选择未分配的 IP 地址来解决该问题。如果您通过 DHCP 获取 IP 地址,请联系 DHCP 管理员。