如何从ROOT手机向公网IP服务器发起反向adb connect连接
反向ADB Connect替代方案(ROOT环境)
针对你手机已ROOT、无法使用VPN组网、需主动向公网服务器发起ADB连接的需求,以下是几个可行的替代方案:
方案1:Socat反向端口转发
Socat是一款强大的网络工具,可在ROOT手机上主动建立反向隧道,将本地ADB服务暴露到公网服务器:
- 公网服务器端操作:启动监听,将服务器5555端口的请求转发到本地ADB端口:
socat TCP-LISTEN:5555,fork TCP:127.0.0.1:5555 - ROOT手机端操作:
- 先安装socat(可通过Magisk模块安装,或在Termux中用
pkg install socat后获取ROOT权限) - 执行命令主动连接服务器,映射本地ADB端口:
socat TCP:你的公网服务器IP:5555 TCP:127.0.0.1:5555
- 先安装socat(可通过Magisk模块安装,或在Termux中用
- 服务器端连接ADB:执行
adb connect 127.0.0.1:5555即可连接手机ADB服务。
方案2:SSH反向隧道
利用SSH的反向端口转发功能,让手机主动将ADB端口推送到公网服务器:
- 公网服务器准备:确保SSH服务正常运行,且允许反向端口转发(默认多数配置支持)。
- ROOT手机端操作:
- 在Termux中获取ROOT权限(执行
su) - 执行反向转发命令:
ssh -R 5555:127.0.0.1:5555 服务器用户名@公网服务器IP - 若需后台运行,可添加
-fN参数;配置SSH免密登录可避免重复输入密码。
- 在Termux中获取ROOT权限(执行
- 服务器端连接ADB:同样执行
adb connect 127.0.0.1:5555即可。
方案3:Magisk自启脚本维持稳定连接
如果需要长期自动维持连接,可通过Magisk开机自启脚本实现:
- 编写脚本:创建
/data/adb/service.d/adb_reverse_connect.sh,内容如下:#!/system/bin/sh while true; do # 检测与服务器的连接状态 nc -z 你的公网服务器IP 5555 if [ $? -ne 0 ]; then # 断开时重新建立socat连接 pkill socat socat TCP:你的公网服务器IP:5555 TCP:127.0.0.1:5555 & fi sleep 60 done - 设置权限:执行
chmod +x /data/adb/service.d/adb_reverse_connect.sh - 生效:重启手机后,脚本会在后台自动运行,维持反向连接。
注意事项
- 确保公网服务器防火墙开放了目标端口(如5555),避免连接被拦截。
- 若手机VPN/代理影响对公网服务器的访问,需在VPN/app的分流规则中设置该服务器IP走直连。
- 优先使用稳定的工具版本,避免因兼容性导致连接不稳定。
内容的提问来源于stack exchange,提问作者Umy
相关产品推荐
相关产品推荐

