将 ssh 连接转发到 Android 设备

将 ssh 连接转发到 Android 设备

在我的实验室中,我想设置一个 ssh 跳转主机,将传入的 ssh 连接转发到通过 USB 连接到它的 Android 设备。所有 Android 设备都已启用 USB 网络共享。网络共享连接在子网 192.168.42.0/24 中为每个 Android 设备生成一个网络适配器。每个 Android 设备都在不同的端口上运行 ssh 服务器。设置如下所示:

具有两个设备的示例性设置

我的想法是根据端口转发 ssh 连接。因此,我将网络适配器添加到网桥并通过 iptables 转发连接。为此,我制定了以下内容:

sudo ip link add name ogt type bridge
sudo ip l set eno1 master ogt 
sudo ip l set usb0 master ogt 
sudo ip l set usb1 master ogt
sudo ip a a 192.168.42.1/24 dev ogt
sudo ip link set ogt up

sudo iptables -t nat -A POSTROUTING -o ogt -j MASQUERADE
sudo iptables -t nat -A POSTROUTING ! -d 192.168.42.0/24 -o eno1 -j SNAT --to-source 172.16.1.100
echo 1 > /proc/sys/net/ipv4/ip_forward

sudo iptables -A PREROUTING -t nat -i eno1 -p tcp --dport 130 -j DNAT --to 192.168.42.130:130
sudo iptables -A FORWARD -p tcp -d 192.168.42.130 --dport 130 -j ACCEPT

sudo iptables -A PREROUTING -t nat -i eno1 -p tcp --dport 131 -j DNAT --to 192.168.42.131:131
sudo iptables -A FORWARD -p tcp -d 192.168.42.131 --dport 130 -j ACCEPT

设置成功了,但是我在跳转主机上没有网络。不幸的是,我不太明白为什么。我该如何改进转发,或者是否有更好的解决方案?如果能得到帮助,我将非常高兴!

答案1

过了一会儿,我让它工作了。我使用 而不是 iptables adb forward

因此,启动 adb 以便它监听所有本地接口:

sudo adb -a nodaemon server start

-a 选项使 adb 监听所有本地接口。如果您只想在本地工作,则无需使用该选项即可启动 adb。

之后使用adb forward将传入的 ssh 连接转发到 Android 设备上的相应端口:

adb -s [serialDevice#1] forward tcp:130 tcp:130
adb -s [serialDevice#2] forward tcp:131 tcp:131

这会将端口 130/131 上的传入连接转发到相应的 Android 设备。使用或现在我可以连接到所需的设备ssh [email protected] -p130ssh [email protected] -p131

以下是我用来研究此问题的一些资源:

相关内容