簡體   English   中英

當隧道被拆除並重新啟動時,反向ssh隧道無法綁定到端口

[英]Reverse ssh tunnel fails to bind to port when tunnel is torn down and restarted

我有一個主機在啟動時啟動反向ssh隧道,如下所示:

ssh -N -R 2222:localhost:22 root@10.1.2.6

它工作得很好,形成了反向隧道。 但每當我重新啟動主機時,構建隧道的遠程服務器都會這樣說:

Sep 28 13:13:59 kali sshd[4547]: error: bind: Address already in use
Sep 28 13:13:59 kali sshd[4547]: error: channel_setup_fwd_listener_tcpip: cannot listen to port: 2222

為了讓我解決這個問題,我必須等待幾分鍾讓舊的ssh隧道超時,然后找到新的ssh連接並將其刪除,然后當我重建ssh隧道時它工作正常。

是否有ssh命令或autossh命令執行類似檢查,如果遠程主機可以綁定該端口,如果沒有,請在幾秒鍾后重試?

我相信我遇到了和原版海報一樣的問題。 我似乎在這個問題的接受答案的最后找到了解決方案:

如果客戶端在服務器上的連接終止之前重新連接,則最終可能會出現新的ssh連接處於活動狀態但沒有端口轉發的情況。 為了避免這種情況,您需要在客戶端使用ExitOnForwardFailure關鍵字。

因此,我在客戶端的/etc/ssh/ssh_config文件中添加了以下行:

ExitOnForwardFailure yes

根據ssh手冊頁 ,此選項將導致“在將自己置於后台之前,以-f [to]等待所有遠程端口轉發成功建立的客戶端”。

這似乎導致ssh在嘗試殺死ssh隧道后立即失敗。 因此,該選項使得能夠重復嘗試直到隧道被正確地重新建立。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM