Ssh

如何解決 ssh 隧道斷開連接問題?

  • March 10, 2019

我在安裝在遠端位置的設備上使用通過 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

引用自:https://unix.stackexchange.com/questions/154614