你有没有遇到过这种情况:SSH 卡住了,Ctrl+C 没反应,只能关窗口重来?
其实不用这么麻烦。
SSH 自带一个“逃生命令”,按两下键就能强制退出。但知道的不多,堪称 SSH 隐藏菜单

与平时用鼠标操作电脑不同,SSH 专为键盘而生,它通过命令行来控制电脑,无论是 Windows、macOS 还是 Linux 都适用。
但无论是老手还是新手,98.5% 的人可能都不知道,SSH 居然还有个隐藏菜单。
现在就打开你的终端(什么是终端?),然后输入 ~?:

青小蛙真的第一次知道这个东西,非常有趣啊。
先来解释下每一项的功能:
(注意:使用时,都需要先输入一个回车)
~. 强制断开:客户端本地立即执行这将强制断开当前 SSH 连接,无论远程是否卡死、网络是否异常都可以生效。
当程序卡住,或者网络问题导致终端无响应的时候,就可以输入:回车 ~.来立即断开连接。
~B 发送 BREAK 信号向远程系统发送 BREAK 信号,多用于串口或网络设备等特殊场景。
基本没用(可以忽略)
只有在连接了串口、交换机、嵌入式设备后才有用,可以打断启动流程、进入调试模式、控制界面等。
~R 重新协商密钥请求 SSH 重新进行加密密钥协商(rekey),用于刷新加密状态。
无任何响应…也不知道有何用途。
~v / ~V 调整日志级别动态增加(~v)或减少(~V)SSH 的日志输出详细程度,用于调试连接问题。
~R 与 ~v 可以联合起来看,就能看到刷新密钥的日志了:

~^Z 挂起 SSH~ + ctrl + z,这可能是最有用的一个功能了,挂起当前 SSH 连接,并返回本地终端。使用 fg 恢复。
有点像 tmux,但又不太一样:
| 功能 | SSH ~^Z | tmux |
|---|---|---|
| 本质 | 挂起进程 | 会话管理器 |
| 作用范围 | 当前 SSH 进程 | 多个终端/窗口 |
| 是否持久 | ❌ 不持久 | ✅ 持久 |
| 终端关闭后 | ❌ 不能恢复 | ✅ 还能恢复 |
| 能否多窗口 | ❌ 不行 | ✅ 可以 |
当有一个挂起的任务时,当前终端会提示无法退出:

~# 查看当前端口转发列出当前 SSH 连接中所有正在使用的端口转发(如 -L、-R、-D)。
比如 OpenClaw 就推荐使用 SSH 连接:
ssh -N -L 18789:127.0.0.1:18789 user@host
按理说应该可以检查到,但青小蛙表示测试失败,什么反应都没有。
~& 后台运行 SSH将 SSH 放入后台继续运行,常用于连接正在关闭但还未完全结束的情况。
但注意,无法回去!
不像 tmux 可以恢复,使用 ~& 之后这个终端就没了,但进程还在运行。
~~ 输入波浪号由于 ~ 是 SSH 控制前缀,输入两个 ~~ 才会向远程发送一个真实的 ~。
也就是当你想要输入 ~ 的时候,需要发送两个 ~~
这个菜单是 SSH 客户端自带的(这里指 OpenSSH 客户端,不是终端、PowerShell 等工具)。不是服务器中的 SSH 带有的。
所以当远程 SSH 卡死之后,还能用。
来源:@Rebane
原文:https://www.appinn.com/ssh-hidden-menu-most-people-dont-know/