我有两台机器,但只能从一台机器通过 ssh 连接到另一台机器(为什么?有时再问我一次......)。所以我想破解这个,这样我就可以有效地进行双向 ssh。
我做了一个叫做的设备h-linux-a(其IP地址是10.10.20.20)
ssh -R 2222:127.0.0.1:22 h-linux-b
在 h-linux-b 上,我测试过可以通过执行以下操作成功连接回 h-linux-a
ssh -p 2222 127.0.0.1
所以在 h-linux-b 上我添加了:
iptables -t nat -A OUTPUT -p tcp -d 10.10.20.20 --dport 22 -j DNAT --to-destination 127.0.0.1:2222
当我这样做时
ssh 10.10.20.20
我的 ssh 就挂在那里。我看到 iptables 上的命中计数器上升(增加了 1,因此无需重试),并且我检查了 h-linux-a 上临时端口上的 tcpdump,以查看流量是否返回(我没有看到任何内容)除了保活)。
所以看来我的 iptables 命令是问题所在。我不太使用 INPUT 链,主要是 PREROUTING 和 POSTROUTING,所以我不知道其中的细微差别。
答案1
代替:
iptables -t nat -A OUTPUT -p tcp -d 10.10.20.20 --dport 22 -j DNAT --to-destination 127.0.0.1:2222
尝试:
iptables -t nat -A OUTPUT -p tcp -d 10.10.20.20 --dport 22 -j REDIRECT --to-ports 2222
重定向链允许您将流量环回同一台机器。