在系統啟動時自動啟動反向 ssh 隧道

在系統啟動時自動啟動反向 ssh 隧道

我有一台位於防火牆後面的遠端計算機,我希望透過 SSH 連接到該計算機。據我了解,這可以透過使用反向 ssh 隧道來實現。

所以我使用的命令是

ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa.pub  [email protected]

我的主要問題是我想在電腦啟動時執行此命令,以便重新啟動後可以存取電腦。

我嘗試透過新增使用者的 crontab 和 中的命令來使用 cron /etc/cron。然而我遇到的問題是這兩個命令都要求輸入密碼。我已經創建了the id_rsa.pub文件並將其發送到遠端伺服器,但它似乎仍然不起作用。

如果我登入(例如透過 teamviewer),我可以執行該命令,並且不會詢問密碼。如果我以 root ( ) 身分執行該命令,sudo則會詢問 rsa 檔案的(空)密碼。我懷疑我的問題就在這裡,即當 cron 執行命令 ssh 要求輸入密碼時,命令掛起。

我嘗試過使用用戶的 rsa 文件和 root 的 rsa 文件,但我都無法連接。

答案1

只需添加“睡眠 60;”在 ssh 命令之前:

@reboot sleep 60;ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  [email protected]

重新啟動後,您的網路仍然處於關閉狀態。

答案2

組合多個來源後,我建立了一個服務來自動啟動反向 ssh 通道。找到設定檔和必要的步驟 在這個儲存庫中

答案3

更好的解決方案可能是自動SSH:

“autossh 是一個啟動 ssh 副本並對其進行監控的程序,如果它死機或停止通過流量,則根據需要重新啟動它。”

正如引文所述,這具有提供「始終在線」功能的額外好處。

答案4

修復 SSH 問題

您無法使用以下方式驗證遠端計算機民眾密鑰,你需要使用私人的做到這一點的關鍵。公鑰必須位於遠端伺服器上。如果您不確定,只需將公鑰複製到遠端伺服器,如下所示:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remoteserver

然後使用私鑰運行命令:

ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  [email protected]

啟動時運行此命令

就像您已經使用 crontab 一樣,然後執行crontab -e編輯您的 cron。新增以下行以在電腦啟動後執行該命令。

@reboot ssh -N -f -R 0.0.0.0:1234:localhost:22  -i /home/username/.ssh/id_rsa  [email protected]

相關內容