断开没有响应的SSH会话

SSH 连接卡住时,大多数情况是因为网络问题或远端进程挂起,常规的 exit 或 Ctrl-C 都不管用。这时可以利用 SSH 内置的转义序列来强制断开。

断开当前连接

在终端中连续输入以下内容(先按回车,再输入 ~ 和 .):

~.

~. 是 SSH 的转义序列,表示立即终止连接。注意 ~ 必须是行首第一个字符,前面不能有其他输入。

如果不确定当前是否已恢复响应,可以先试试常规方式:

exit

或按 Ctrl-D 发送 EOF。只有在这些都无效时再用 ~.。

更多转义序列

SSH 还支持其他转义命令,输入 ~? 可以查看完整列表:

~?

常用几个:

序列 作用
~. 断开连接
~Ctrl-Z 挂起 SSH 会话(退回 shell,fg 可恢复)
~ 发送一个字面 ~(转义序列需要两个 ~)
~? 显示帮助

从另一台机器强制断开

如果手边有第二台终端,可以直接在服务端杀掉对应的 sshd 进程。先找出连接来源:

who

然后杀掉对应进程:

kill -9 <pid>

who 输出的第二列是登录 IP,配合 ps aux | grep sshd 可以精确定位。

参考资料

linux - How do I exit an SSH connection? - Super User