如何退出無(wú)響應(yīng)的 SSH 連接?
大家有時(shí)候會(huì)發(fā)現(xiàn) ssh 掛在那里沒(méi)有響應(yīng)了,可能是客戶端的問(wèn)題,也可能是服務(wù)器端的問(wèn)題,也可能是客戶端和服務(wù)器之間的網(wǎng)絡(luò)問(wèn)題;可能是客戶端電腦休眠后連接斷了、可能是網(wǎng)絡(luò)斷了、可能是 WiFi 信號(hào)不好、可能是網(wǎng)絡(luò)延遲大了、可能是服務(wù)器掛了、也可能是服務(wù)器上的 sshd 進(jìn)程掛了,…,可能是技術(shù)問(wèn)題,也可能是非技術(shù)問(wèn)題,可以找出無(wú)數(shù)可能。
我常遇到或者說(shuō)每天都遇到的情形是,離開(kāi)辦公桌前忘了退出 ssh 會(huì)話。工作的時(shí)候長(zhǎng)時(shí)間 ssh 到服務(wù)器上,工作完蓋上 Mac 走人,回家后發(fā)現(xiàn)那些沒(méi)退出的 ssh 會(huì)話還掛在那里,無(wú)法退出、無(wú)法 Ctrl+C、無(wú)法做任何操作。我的粗暴做法通常是直接關(guān)閉 Terminal 后重新開(kāi)一個(gè)新的;如果用的不是圖形系統(tǒng),沒(méi)有窗口可以關(guān)閉,那還要啟用另一個(gè)終端找到相關(guān)進(jìn)程后 kill 掉,如果每天都要搞這么幾次還是挺煩人的。今天無(wú)意中從同事那里學(xué)到了一個(gè)小技巧,在那些沒(méi)退出的 ssh 會(huì)話里用 ~. “優(yōu)雅” 的斷開(kāi)連接。
~.
查看一下 man 幫助文件發(fā)現(xiàn)已經(jīng)有說(shuō)明,慚愧的是用了這么多年 ssh 才發(fā)現(xiàn)有這么一招:
$ man ssh ... ESCAPE CHARACTERS ... The supported escapes (assuming the default `~') are: ~. Disconnect.