先搞到一台云手机(也就是在线云机,远程云手机,云测手机),这些云手机通常都是跑在服务端的模拟器(也有真机)
pkg install openssh
、pkg install openssl
ssh-keygen -A
whoami
passwd
,按提示输入sshd
至此,你的Termux控制台应该已经成功的启动了sshd服务,它运行的默认端口是:8022,不是通常的22端口
完成setp2后,你会突然发现一个问题,这些云手机通常都不具备公网ip,她们位于服务器电脑的虚拟机中,所以,你无法直接通过公网连接到Termux。
怎么办?
关键点在于,既然我们能访问到处于内网的云机,所以,它必定和出网口机器存在通信。
这个通信方式通常是类似这样的实现:
这种技术,通常有端口转发、虚拟网卡等。
这时候,咦!你发现了哗点
那我去服务器电脑上,设置端口转发到云机模拟器系统的Termux 的ssh服务不就好了?
是的,你可以这么做,包括个人电脑上的模拟器,你也可以这么进行操作,从而开放到局域网、公网上,使大家都可以访问到!
然后你发现,你登录不到服务器对应的电脑(通常云机服务商,不会直接提供服务器登录),所以你颓然了。
但其实,获取还有一个办法
那就是adb
调试
adb
是一个安卓开发工具,是安卓调试桥的缩写。它实现了一个通信协议(socket实现),能够连接到手机中,进行apk安装,发送系统广播,执行命令等,许多投屏软件如scrcpy、乃至云手机厂商等就是通过这个方式来投屏或传输信息以及前后台通信……
等等,执行命令,你突然一个鸡灵!如果,如果,能够连接adb,那这不就是任意命令执行权限了吗?而且云机通常开启了root,这……
是的,没错,具备adb
连接方法的云手机,就是这么狂,就是这么猛,可以执行任意命令。
所以,你可以通过adb命令执行端口转发,将个人本机电脑的某个端口和云手机模拟器系统的8022端口关联起来,不需要登录到服务器电脑进行操作,adb帮你操作了。
如果你是远程云机:
如果你是本地真机:
你得到了一个adb公网连接地址,如18.23.22.37:3200
adb connect 18.23.22.37:3200
adb -s 18.23.22.37:3200 forword tcp:8021 tcp:8022
,如果你只连接了一个设备,可以省略-s 18.23.22.37:3200 ,否则不能忽略,因为adb不知道你要对那个设备进行操作连接地址:127.0.0.1(因为转发到自己的电脑上了)
端口:8021 (执行命令时设置的转发端口,不一定是8022)
用户:去Termux上执行命令获取:whoami
使用命令行登录:ssh -X 用户@127.0.0.1:8021
大功告成,贴图
远程云机都成功公开出去了,真机、模拟器还不简单?
对于模拟器:
也有的模拟器不需要转发,它已经开启了wifi调式。
判断标准是,adb device,带有ip地址的一般可以直接连接了。
不带ip地址的,需要寻找其端口。如android官方的模拟器,一般叫做emulator-5554,那么其端口就是5555,电脑转发127.0.0.1:xxx端口到这个端口就行
对于真机:
当然,也可以不进行转发,因为通过wifi调式,真机在局域网内也是可以通信的:
adb -s 设备id tcpip 6666
其他人电脑上执行:
adb connect 手机pi:6666
然后其他兄弟就可以连接到你手机上进行apk调式,安装termux,最后ssh连接了