Ssh
如何解決 ssh 隧道斷開連接問題?
我在安裝在遠端位置的設備上使用通過 autossh 在啟動時啟動的 SSH 隧道。到目前為止一切正常,但昨天連接部分中斷,autossh 無法正常工作。我很想弄清楚發生了什麼,以防止它再次發生。我必須處理 SLA 和所有問題。
以下是詳細資訊:
設置
遠端站點:
- 樹莓派上的 Raspbian (debian wheezy) - 開機時執行的 Autossh 連接到我們的伺服器並建立 3 個 ssh 隧道 隧道 1:正常隧道將樹莓派上的本地埠轉發到我們辦公室的伺服器 隧道 2:反向隧道打開一個我們伺服器上的埠指向遠端網路上的設備 隧道 3:反向隧道從我們伺服器的環回 (127.0.0.1) 適配器打開一個埠,該埠指向其環回適配器上樹莓派的 ssh 埠。
所以基本上通過這個設置,我必須在我們的伺服器中進行 ssh,我可以從該伺服器中 ssh 到每個遠端設備。
SSH 伺服器:
-Debian Wheezy - 伺服器上沒有防火牆/iptables,我們為此使用另一個盒子
問題
兩條反向隧道(隧道 2 和 3)都停止工作。的輸出
sudo netstat -atp | grep ssh
顯示唯一仍然打開的埠是隧道#1
當我為隧道#1 殺死伺服器上的 ssh 程序時,autossh 完成了它的工作,所有隧道都重新連接了,但如果我不必這樣做,我寧願這樣做。
autossh 是正常行為嗎?autossh 是否有監控反向隧道的問題?
來自遠端設備的 SYSLOG
Sep 7 06:25:06 remote_hostname rsyslogd: [origin software="rsyslogd" swVersion="5.8.11" x-pid="1661" x-info="http://www.rsyslog.com"] rsyslogd was HUPed Sep 8 06:25:05 remote_hostname rsyslogd: [origin software="rsyslogd" swVersion="5.8.11" x-pid="1661" x-info="http://www.rsyslog.com"] rsyslogd was HUPed Sep 8 10:24:57 remote_hostname autossh[1428]: ssh exited with error status 255; restarting ssh Sep 8 10:24:57 remote_hostname autossh[1428]: starting ssh (count 2) Sep 8 10:24:57 remote_hostname autossh[1428]: ssh child pid is 24161 Sep 8 16:53:53 remote_hostname autossh[1428]: ssh exited with error status 255; restarting ssh Sep 8 16:53:53 remote_hostname autossh[1428]: starting ssh (count 3) Sep 8 16:53:53 remote_hostname autossh[1428]: ssh child pid is 30541 Sep 9 06:25:05 remote_hostname rsyslogd: [origin software="rsyslogd" swVersion="5.8.11" x-pid="1661" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
您正在使用各種方式來創建日誌輸出,
但沒有提及最重要的方式:
命令
ssh
本身有一個“詳細”選項-v
。更有趣的是,它還有一個“非常冗長”的選項
-vv
。哦,還有“非常非常冗長”,
-vvv
實際上可能太冗長了!使用選項 -v、-vv 或 -vvv 執行 ssh 是否提供了更多洞察力?
顯示選項啟用的詳細程度:
$ ssh -v localhost true |& wc -l 56 $ ssh -vv localhost true |& wc -l 122 $ ssh -vvv localhost true |& wc -l 282