我广泛使用 SSH 来管理许多系统。一切都运行良好,直到不久前我发现我无法通过 SSH 进入某些服务器(但其他服务器运行正常)。
我最近确实升级到了最新的 Ubuntu 14.04,不知道这是否是原因,但更重要的是 - 我该如何解决这个问题。
在每种情况下,我都使用公钥/私钥通过 VPN 进行 ssh。在每种情况下,如果我手动 telnet 到端口 22,我都会收到 SSH 横幅。几乎没有什么可以帮助追踪问题所在,但是当我使用“-v”进行 ssh 时,我尝试访问的系统在输出后失败
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<3072<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
当 SSH 在另一个网络上成功时,我得到以下信息
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<3072<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA d9:a7:23:9e:93:da:fe:15:54:5c:a3:01:54:b7:0c:be
debug1: Host '114.23.35.78' is known and matches the RSA host key.
我可以确认,这似乎是全部1 个网络后面的主机出现故障 - 其中相当多的主机跨不同版本的 CentOS。(我可以在网络中使用 SSH 的地方是使用基于 CentOS 和 Ubuntu 的机器 - 我可以访问两者)。另一个网络后面的所有连接似乎都可以正常工作。
在这两种情况下,我都尝试使用 SSH 协议 2(如果我尝试强制使用协议 1,我会收到“协议主版本不同:1 与 2”的信息)
我已尝试在输出上限制 MTU,但似乎没有什么变化。
在
有什么想法可以让我(没有本地访问服务器)弄清楚发生了什么吗?
编辑更多信息:
当我尝试从我的手机进行 SSH(通过相同的路由器和类似的 VPN)时,访问正常。
当我尝试通过蜂窝数据连接通过手机从计算机进行 SSH 时,它运行正常。
无论我是通过电缆还是接入点将计算机连接到路由器,它都不允许我连接。(我无法通过手机将计算机连接到 AP,但那是因为我不能同时将 AP 用作 AP 客户端和 AP)
我怀疑路由器的 ARP 缓存中有大量条目(超过 1000 个),这是由于当天早些时候的 P2P 活动造成的。调制解调器正在使用“PPP 扩展”,因此 IP 的 MAC 地址当然都相同,即调制解调器的 MAC 地址。我无法选择使用此调制解调器终止路由器上的 PPP 会话。(也不确定这有多大关系 - 我认为它不相关,因为流量是使用 OpenVPN 进行隧道传输的,在跟踪路由中绕过路由器,而且我得到了 Telnet 横幅。
问题似乎与 IPTABLES 无关,因为我在网络路由器上删除了 iptables,导致出现问题。我可以毫无问题地连接到路由器的外部接口(没有 VPN),但只要我尝试内部接口,就会遇到所描述的问题。
升级 SSH 和 OpenVPN 没有任何区别,允许密码验证也没有任何区别。