![SSH 连接 - 过了一段时间,我无法输入任何内容](https://linux22.com/image/636808/SSH%20%E8%BF%9E%E6%8E%A5%20-%20%E8%BF%87%E4%BA%86%E4%B8%80%E6%AE%B5%E6%97%B6%E9%97%B4%EF%BC%8C%E6%88%91%E6%97%A0%E6%B3%95%E8%BE%93%E5%85%A5%E4%BB%BB%E4%BD%95%E5%86%85%E5%AE%B9.png)
无论我连接到哪个服务器,这种情况都会发生。我输入:
ssh user@server
我登录后,几分钟内一切都正常。但过了一段时间,可能是当我切换到其他程序(浏览器、ftp 客户端等)时,当我尝试在终端中输入任何内容时,光标在我输入时停止闪烁,但实际上什么也没输入。我无法执行任何命令,我所能做的就是关闭终端窗口,重新打开它并重新连接。
如果它有任何重要性,我正在本地机器上运行 Ubuntu 12.04。
答案1
您的客户端和服务器之间有一个 NAT 路由器或类似的状态防火墙。当您打开 TCP 会话时,防火墙会记住您的客户端端口和服务器端口之间已创建 TCP 连接。只要防火墙记住该连接,它就会继续在客户端和服务器之间传递数据包。
会话“中断”是因为防火墙忘记了连接并停止传递数据包。防火墙可能会忘记连接,因为它对空闲连接设置了超时限制。或者,它可能会忘记,因为它的内存有限,并且创建了太多新连接,以至于它无法记住所有连接。
ssh
有一些选择通过在连接空闲时发送定期“保持活动”数据包来解决此问题。查看TCPKeepAlive
、ServerAliveInterval
和ServerAliveCountMax
选项。
答案2
值得一提的是,你可以不关闭终端窗口,而是中止 ssh 会话通过Enter ~ .连续输入。
答案3
连接到 ssh 后,我也无法在终端中输入任何内容。但我修复了这个问题,只是在我的 VS Code 中的终端右上角创建一个新终端。