2017-01-03 135 views
1

我正在嘗試編寫一個go應​​用程序,該應用程序允許我使用go ssh庫在Windows計算機和Linux計算機之間執行反向ssh隧道。SSH偵聽器不關閉

在這樣做的過程中,我創建遠程機器上的監聽器,如下: remoteListener, err := sshClient.Listen("tcp", remoteString)

其中sshClient是類型ssh.Client的目的,並且被配置以連接到遠程計算機。

這裏的問題是,當Linux機器上的sshd進程中斷與應用程序的連接時,ssh Listener在遠程機器上保持活動狀態。因此,重新連接應用程序會失敗,因爲偵聽器已經在遠程計算機的同一端口上運行。

我該如何解決這個問題? ssh庫是否允許我定義偵聽器的超時?

+0

你如何關閉遠程機器的會話?如果會話已終止,則ssh服務器應清理連接。 - – JimB

+0

我通過使用以下命令阻止端口2222上的ssh連接(我正在sshing的端口)來測試ssh失敗: 'sudo iptables -D INPUT -p tcp --dport 2222 -j DROP' 。這似乎並沒有清理已終止的會話。 – shreyashk

+0

如果您只丟棄數據包,則遠程服務器無法知道您已終止會話。 – JimB

回答

0

我只是在重新連接後等待超時。我發現沒有其他簡單的解決方案。