SSH 连接因数据包丢失而挂起

SSH 连接因数据包丢失而挂起

建立连接后,我尝试使用 ssh 连接到工作中的服务器openvpn

到昨天为止,几个月来它一直运行良好。但从今天起,它就ssh user@server挂了。

详细的输出给了我

OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to *** [***] port 22.
debug1: Connection established.
debug1: identity file ~/.ssh/id_rsa type -1
debug1: identity file ~/.ssh/id_rsa-cert type -1
debug1: identity file ~/.ssh/id_dsa type -1
debug1: identity file ~/.ssh/id_dsa-cert type -1
debug1: identity file ~/.ssh/id_ecdsa type -1
debug1: identity file ~/.ssh/id_ecdsa-cert type -1

然后什么也没发生......

配置没有任何变化。事实上,前几天我就成功连接了。

我还 ping 了服务器,以确保它没有宕机。然后我注意到我丢包严重(大约 70%)

知道出了什么问题吗?

答案1

原因不是 SSH 服务器/客户端连接而是连接本身。如果你发现大量数据包丢失,你应该检查

  1. 物理电缆、路由器、交换机等。全部更改。如果仅在 ping 服务器时出现数据包丢失,则检查服务器物理安装
  2. 检查服务器负载,可能挂了。如有必要,请重新启动服务器。

答案2

如果连接问题不是你这边的问题,而你需要完成一些工作,mosh手册页主页) 处理不稳定连接的方式比普通 SSH 更好。在两台机器上安装后,您可以像 一样使用它ssh

答案3

对我来说,虽然比完全挂起 ssh 连接要好,但mosh在数据包丢失率高的情况下,这不是一个可用的解决方案。更不用说你需要有修改服务器、防火墙等的权限才能使用它。

所以我编写了一个名为 ssh 包装器ssh 线路模式(因为它执行的是telnet(1)行模式在过去所做的事情) - 例如,它为您提供了本地行编辑器(因此您可以编辑、调用历史记录等。整行并在本地进行编辑而不会出现任何延迟,并且只有ssh在您按下 Enter 键后才会通过标准发送到服务器,此时延迟更容易被容忍)。

它在高数据包丢失和高延迟情况下都能产生奇效,但它并不是魔法——如果您超出了外壳范围并且需要全屏远程访问(例如ncurses远程应用程序),您必须按热键来禁用线路模式并使用标准逐字符ssh模式,直到您想要返回快速线路模式。

相关内容