假设有三台机器
A : PC下虚拟机 装的 Ubtunu Linux ,ip为192.168.175.129 用户名为kisdy
B : 位于公网的CenterOS Linux 服务器 ,ip为192.168.52.15 用户名为root
C :Android 平板,连接一个WIFI,装了TerMux Apk 模拟 Linux终端
要求
A安装了 SSH SERVER 和SSH Client (必须都装,花了半天时间发现实现不了功能,最后装上ssh server问题才解决的)
B安装了 SSH SERVER 和SSH Client
C安装了 SSH CLient
接下来干活:
一
A 反向代理连接到 B
ssh -p 22 -qngfNTR 8088:localhost:22 root@192.168.52.15
之后通过ps aux | grep ssh 查看 ssh连接已经建立了
二
B机器正向代理并实现端口转发
ssh -fCNL *:1234:localhost:8088 localhost
通过截图可以看到连接已经建立
三
,平板通过ssh连接到位于虚拟机内的主机A
ssh -p 1234 kisdy@192.168.52.15
通过最终截图,可以看出来,ssh连接最终进入了A的shell环境了。
中途遇到过一个问题执行第三部操作时一直提示报错 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
直接删除.ssh/known_hosts文件,即刻。
这样的ssh不是持久的,最终需要用autossh实现持久连接,这个欢迎小伙伴自己搜索
研究这块的目的,是因为公司想做一个远程调试的功能,即通过PC adb connect 到 用户手里的Android设备,实现可视化调试,中间一个关键地方就是通过公网服务器中转,SSH反向代理,实现PC ssh连接用户手里的Android设备。
当然ssh反向代理只是第一步,后面还有很多技术要点要研究。