參考鏈接:
https://blog.csdn.net/sinat_41721615/article/details/105575955
https://zhuanlan.zhihu.com/p/112227542
建立ssh反向隧道方法:
準備:一臺有公網IP的服務器,處於內網的設備,客戶端設備
說明:由於客戶端設備不能直接通過互聯網訪問內網設備,而內網設備可以通過ssh與服務器建立連接,因此需要在內網設備和服務器之間建立一條反向ssh隧道,客戶端可以通過服務器來ssh訪問內網設備
建立ssh反向隧道過程:
- 在內網設備輸入ssh命令,與服務器建立ssh通信,同時將ssh數據在服務器的5007端口做轉發
其中-N
表示不執行命令,只轉發;-f
表示後臺運行;-R
表示反向隧道;5007:localhost:22
表示監聽服務器的5007端口,所有包轉發到本地的22
端口;root爲ssh服務器用戶;119.28.54.126爲公網服務器IP
- 登錄服務器ssh轉發端口即可ssh到內網設備上
由於ssh會超時斷線,因此需要配置斷線重連,並且需要設備免密登錄服務器
斷線免密登錄自動重連:
- 在內網設備產生公鑰和私鑰
然後按三次回車執行默認選項生成公鑰和私鑰。會生成密鑰文件和私鑰文件 id_rsa,id_rsa.pub 或 id_dsa,id_dsa.pub
- 複製密鑰
在設備執行
ssh-copy-id root@serverip
將密鑰複製到服務器.ssh/known_hosts文件中
或在服務器
創建存放密鑰文件: [root@localhost .ssh]# touch authorized_keys
追加密鑰到文件:[root@localhost .ssh]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- 在內網設備執行autossh
其中-M 5555,
表示通過5555
端口監聽連接狀態,有問題就重連
可能出現的錯誤:Permission denied, please try again.
問題原因:服務端SSH 服務默認配置禁止root用戶登錄策略。
解決方法:
1、通過 cat /etc/ssh/sshd_config 查看是否包含類似如下配置: #PermitRootLogin no
2、將#PermitRootLogin no 改爲 PermitRootLogin yes
3、使用如下指令重啓 SSH 服務: service sshd restart