使用 ssh 反向隧道作为网关到达 NAT 下的机器

使用 ssh 反向隧道作为网关到达 NAT 下的机器

我想访问具有 NAT 且没有端口转发的网络下的计算机。

在无端口转发 NAT 后面“关闭”的机器称为 RaspberryB。该机器与机器 (RaspberryA) 创建一条反向隧道,由于端口 22 上的端口转发,该机器可到达,且本地 IP 为 192.168.1.34。

所以在 RaspberryB 上我启动了命令 ssh -R 43022:localhost:22 userA@addressRaspA

在 RaspberryA 上,我可以通过反向隧道连接回来:

ssh userB@localhost -p 43022

它有效。

从同一网络中的PC我可以连接到RaspberryA,然后连接到RaspberryB(我在Windows下使用putty,但我认为无关紧要)

ssh [email protected] <<-- after this i'm inside RaspberryA

ssh userB@localhost -p 43022 <<-- after this i'm inside RaspberryB

现在我已经实现了我所需要的,从另一个网络中的PC访问raspberryB。

,我只想在一篇文章中执行此操作...我想,如果从 PC 发出命令:

ssh [email protected] -p 43022

thgen 我的电脑应该连接到 RaspberryA 的 43022 端口,被重定向到 RaspberryB 的端口 22,因此我应该能够使用单个命令连接到 rapsberryB。

但我明白“网络错误:连接被拒绝

我不认为这是防火墙问题,因为如果(在 RaspA 上)我 temconfigure ssh 来监听 PC 可以连接的 43022 端口,但以防万一这是我的iptables-S输出

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
f2b-sshd   tcp  --  anywhere             anywhere             multiport dports ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain f2b-sshd (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

那么,我哪里做错了?为什么与RaspberryA同一网络的PC无法通过最后一条命令到达raspberryB?

编辑:忘了提及,我还尝试打开 ssh, ssh -R 1.1.1.1:43023:localhost:22 pi@addressRaspA 我不太了解 1.1.1.1 是否正确用于创建网关,或者远程主机是否尝试连接到网络中的所有 PC。尽管如此,仍然显示“连接被拒绝”消息

编辑2:我希望能够从网络上的任何PC访问raspberryB,因此创建到特定IP的远程隧道不是一个选项。最好如果 ita 也可以从网络外部工作,则可以在 raspberryA 网络的路由器上打开端口转发

网络图

答案1

已解决:我所做的错误:

首先,1.1.1.1不是“所有ip”。 0.0.0.0 是。

其次,我需要在 ssh 配置中激活“GatewayPorts”

所以:

  1. 编辑 /etc/ssh/sshd_config ,设置GatewayPorts clientspecified
  2. 使用命令启动反向隧道 ssh -fN -R 0.0.0.0:43022:localhost:22 rasbberryA@addressRaspA

相关内容