如何摆脱崩溃的SSH会话?


62

很多时候,我的SSH会话不再响应(例如,当我失去互联网连接然后重新连接时)。Ctrl+ CCtrl+ DCtrl+ Z和成千上万的按键没有任何作用。

大多数情况下,我已经拥有tmuxbyobu正在运行,因此我可以启动另一个终端并重新连接。但是,它确实很麻烦。如何断开SSH与当前终端的连接?

Answers:


87

使用“转义字符”(通常为tilde ~)来控制SSH会话:

  • ~然后.关闭SSH连接;
  • ~接着Ctrl+ Z暂停SSH过程;
  • ~其次是~发送文字~

您可以使用ssh-e选项 设置转义字符。

此外,请记住

你还应该记得按Enter之前~。转义字符是该行中的第一个字符时起作用。并且您还可以使用~和以后?从ssh客户端获得帮助。(感谢Lukasz Stelmach的评论。)


11
你还应该记得按Enter之前~。转义字符是该行中的第一个字符时起作用。并且您还可以使用~和以后?从ssh客户端获取帮助。
Lukasz Stelmach

7
~接下来是?您所支持的转义序列的完整列表
Matijs 2013年

1

可以将Openssh配置为将客户端或服务器的活动消息发送到另一端。如果未获得响应,则连接将终止。从服务器端,查看ClientAliveIntervalClientAliveCountMax配置选项。在客户端,请参阅ServerAliveIntervalServerAliveCountMax选项。TCPKeepAlive也是一种选择,但在以前的选择没有的情况下是可欺骗的,因此它们可能会更好。

如果将它们设置为合理的值,则可能永远不会再有连接挂起。唯一的缺点是,出于安全原因,如果您希望ssh连接终止,则它们可能会保持打开状态。

有关进一步的信息,请参见OpenSSH sshd配置手册页OpenSSH ssh配置手册页


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.