断开没有响应的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 可以精确定位。