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