大家有時候會發現 ssh 掛在那裏沒有響應了,可能是客户端的問題,也可能是站羣服務器端的問題,也可能是客户端和站羣服務器之間的互聯網問題;可能是客户端電腦休眠後連線斷了、可能是互聯網斷了、可能是 WiFi 訊號不好、可能是互聯網延遲大了、可能是站羣服務器掛了、也可能是站羣服務器上的 sshd 程序掛了,…,可能是技術問題,也可能是非技術問題,可以找出無數可能。
我常遇到或者説每天都遇到的情形是,離開辦公桌前忘了退出 ssh 會話。工作的時候長時間 ssh 到站羣服務器上,工作完蓋上 Mac 走人,回家後發現那些沒退出的 ssh 會話還掛在那裏,無法退出、無法 Ctrl+C 、無法做任何操作。我的粗暴做法通常是直接關閉 Terminal 後重新開一個新的;如果用的不是圖形系統,沒有視窗可以關閉,那還要啓用另一個終端找到相關程序後 kill 掉,如果每天都要搞這麼幾次還是挺煩人的。今天無意中從同事那裏學到了一個小技巧,在那些沒退出的 ssh 會話裏用 ~. “優雅” 的斷開連線。
~.

檢視一下 man 幫助檔案發現已經有説明,慚愧的是用了這麼多年 ssh 才發現有這麼一招:
$ man ssh

ESCAPE CHARACTERS

The supported escapes (assuming the default `~’) are:

~. Disconnect.