参考链接:
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