如何退出無響應的 SSH 連接?
大家有時候會發現 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.