![通过网关设置 ssh 隧道,可以吗?](https://linux22.com/image/619465/%E9%80%9A%E8%BF%87%E7%BD%91%E5%85%B3%E8%AE%BE%E7%BD%AE%20ssh%20%E9%9A%A7%E9%81%93%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%90%97%EF%BC%9F.png)
本地 -> 网关(仅启用 ssh 端口) -> 远程
我可以 ssh 到网关然后到远程,没问题。
我可以通过网关在本地和远程之间建立 ssh 隧道吗?我想访问本地:9980,它将通过网关转发到远程:9980。我担心使用网关上的端口 22 的隧道会给其他人的 ssh 使用带来麻烦。
谢谢
答案1
这取决于。
您的网关是实际的网关/路由器吗?还是网关/服务器?
如果是网关/路由器,那么您可以使用端口转发或 NAT。我会给你说明,但这取决于操作系统/制造商。本质上,你让网关/路由器监听端口 22,然后你转发到destination:9980
,只要目的地正在监听 9980,这应该会自动工作。
如果它是一个网关/服务器(假设基于 Linux),那么您可以使用 IPTABLES NAT 规则,或者反向 ssh 隧道(应该从目标端初始化)。
IPTABLES NAT示例:
iptables -t nat -I PREROUTING --src 0/0 -p tcp --dport 22 -j REDIRECT --to-destination $destination_ip --to-ports 9980
这将接收来自端口 22 的任何地址的任何传入流量并将其转发到您的$目标 IP自动运行于端口 9980。
反向 SSH 隧道示例:
destination# ssh -R 9980:localhost:22 user@gateway
这会在网关上设置一个监听器,它将任何要指向的东西gateway:9980
映射到destination:22
对于您来说,如果您像平常一样连接到网关:
local# ssh user@gateway
然后您就可以手动连接到目的地从你的网关根据需要,而不是自动
gateway# ssh user@localhost:9980
答案2
remote
如果我理解正确的话,你可以通过 建立SSH 隧道gateway
。具体做法如下:
ssh -L 9980:remote:9980 gateway
将通过网关使用 ssh 隧道将本地 9980 绑定到远程 9980 端口。