大家有时候会发现 ssh 挂在那里没有响应了,可能是客户端的问题,也可能是服务器端的问题,也可能是客户端和服务器之间的网络问题;可能是客户端电脑休眠后连接断了、可能是网络断了、可能是 wifi 信号不好、可能是网络延迟大了、可能是服务器挂了、也可能是服务器上的 sshd 进程挂了,…,可能是技术问题,也可能是非技术问题,可以找出无数可能。
我常遇到或者说每天都遇到的情形是,离开办公桌前忘了退出 ssh 会话。工作的时候长时间 ssh 到服务器上,工作完盖上 mac 走人,回家后发现那些没退出的 ssh 会话还挂在那里,无法退出、无法 ctrl+c、无法做任何操作。
我的粗暴做法通常是直接关闭 terminal 后重新开一个新的;如果用的不是图形系统,没有窗口可以关闭,那还要启用另一个终端找到相关进程后 kill 掉,如果每天都要搞这么几次还是挺烦人的。

今天无意中从同事那里学到了一个小技巧,在那些没退出的 ssh 会话里用 <code>~.</code> “优雅” 的断开连接。
查看一下 man 帮助文件发现已经有说明,惭愧的是用了这么多年 ssh 才发现有这么一招:
<code>$ man ssh</code>
<code>...</code>
<code>escape characters</code>
<code></code>
<code>the supported escapes (assuming the default `~') are:</code>
<code>~. disconnect.</code>
原文发布时间为:2013-08-11
本文来自云栖社区合作伙伴“linux中国”