有没有办法在不终止整个终端的情况下断开与无响应的 SSH 会话的连接?具体来说,我正在使用 konsole,我正在使用的机器有时会挂起,但实际上并没有死掉(从而终止连接)。因此 SSH 挂起,我必须关闭终端并打开一个新终端才能尝试通过 ssh 重新连接到该终端或执行其他操作。有没有办法有效地按 ctrl+c 退出 ssh 会话?
答案1
一种方法是使用 ssh 转义字符。默认情况下这是“~”,但可以-e
在调用 ssh 时使用选项手动设置或通过EscapeChar
ssh 配置中的选项进行设置。要终止挂起的会话,通常可以使用以下方法:
~.
正如 Gilles 所指出的,只有在击中之后才能立即识别这一点Enter。
答案2
只是澄清一下,希望这对新人有所帮助。
按Enter
按~(这是美式布局键盘上的shift+ )`
按.
光标将返回到本地提示符。
答案3
如果您想终止所有活动的 ssh 会话,可以使用此命令(假设只有 ssh 连接到端口 22):
kill `sudo lsof -Pni :22 | tail -n1 | grep -wv sshd | awk '{print $2}'`
此命令查找连接在端口 22 上的所有进程,删除命令输出的标语lsof
,忽略 ssh 守护进程并获取所有 PID,然后终止这些 PID。