
我有一台位於防火牆後面的遠端計算機,我希望透過 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]