我有一个主服务器,可以通过静态 IP(1.2.3.4)从外部访问。从主服务器,我可以连接到位于本地网络(10.0.0.1)中的从服务器。目前,我的服务器.ssh/config
如下所示:
Host master
Hostname 1.2.3.4
User pi
IdentityFile ~/.ssh/id_rsa
Host slave
Hostname 10.0.0.1
User pi
IdentityFile ~/.ssh/id_rsa
ProxyJump master
通过上述操作,我可以轻松地使用 连接到从属服务器ssh slave
。不幸的是,这不适用于 Filezilla,它只允许我指定主机名和端口。这就是为什么我想将主服务器上的端口 2201 重定向到从属服务器 SSH。换句话说,我希望相当于运行。关于如何实现这一点有什么建议吗?ssh [email protected] -p 2201
ssh slave
编辑:
添加-t nat
标志后,我执行了@timmeyh建议的命令。iptables -t nat -L --line-numbers
现在给出
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
1 DNAT tcp -- anywhere anywhere tcp dpt:2201 to:10.0.0.1:22
Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
1 SNAT tcp -- anywhere 10.0.0.1 tcp dpt:ssh to:10.0.0.0
其中 10.0.0.0 是主地址。但拒绝连接。我还确保已启用该功能。ssh [email protected] -p 2201
/proc/sys/net/ipv4/ip_forward
答案1
你可以用 iptables 解决这个问题:
iptables -A PREROUTING -p tcp -m tcp --dport 2201 -j DNAT --to-destination 10.0.0.1:22
iptables -A POSTROUTING -d 10.0.0.1/32 -p tcp -m tcp --dport 22 -j SNAT --to-source <10.x.x.x IP of master>
第一个命令将告诉服务器将端口 2201 上的传入流量转发到 IP 10.0.0.1 的端口 22
第二个命令会告诉您,所有前往 10.0.0.1 的 22 端口的流量都必须具有正确的源 IP(在本例中为 1.2.3.4 服务器的 10.xxx 地址),以便目的地(10.0.0.1)知道将其路由回哪里。
希望这可以帮助