大家有時候會發現 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中國”