簡體   English   中英

保證此類SSH連接的最佳方法是什么?

[英]What is the best way to guarantee this type of SSH connection?

我有這個腳本創建從機器A到機器B的這種“反向”SSH連接,這樣我就可以從機器訪問機器A.

我是怎么做到的

這是用於連接到機器B的腳本機器,機器B在啟動時運行一次:

spawn ssh -fN -oStrictHostKeyChecking=no -i /home/pi/.ssh/id_rsa -R 20007:localhost:22 machine_b@123.456.789.012
expect "*passphrase*"
send "the passphrase string\r"
expect eof

然后在機器B上,我只需要連接到機器A,如下所示:

ssh pi@localhost -p 20007

我為什么要使用這種“反向”SSH連接? 嗯,這是機器B可以看到並連接到機器A的唯一方式,因為機器A在NAT后面並且無法尋址,因此連接必須來自機器A.

問題

盡管它是全部硬編碼的,特別是密碼短語部分,但這種方法很好。 然而它有一個問題......如果機器A的互聯網變得便便,SSH連接關閉,並且在互聯網出現時不會重新打開。

解決方案嘗試

我的第一個解決方案是每小時運行一個cronjob運行SSH腳本,但很快我每天有24個同時從機器A到機器B的SSH連接,到本周末,機器B死於多余的SSH連接。

問題

那么,有沒有其他方法可以讓機器A只在斷開連接時“重新生成”連接,並確保舊的連接被終止,以便我有一個且只有一個從機器A到B的SSH連接?

謝謝!

您可以使用netstat檢查當前連接,為端口22檢查grep,如果已建立,則不執行任何操作。 即netstat -an | egrep 22

暫無
暫無

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

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