![ssh 反向隧道与远程 IP](https://linux22.com/image/84625/ssh%20%E5%8F%8D%E5%90%91%E9%9A%A7%E9%81%93%E4%B8%8E%E8%BF%9C%E7%A8%8B%20IP.png)
来自服务器 192.168.0。1,我想访问服务器 192.168.0。2在端口 80 上。
192.168.0。2可以达到192.168.0。1,但是 192.168.0。1无法到达 192.168.0。2(防火墙)。
我通过在 192.168.0 上输入以下命令设置了反向代理。2:
ssh -f -N -T -R0.0.0.0:80:localhost:80 192.168.0.1
现在是192.168.0。1可以达到192.168.0。2,使用以下命令:
wget localhost:80
不过我希望能够到达 192.168.0。2通过录音
wget 192.168.0.2:80
在不干扰 DNS 的情况下这可能吗?
答案1
您需要定义GatewayPorts
in,sshd_config
否则*
或0.0.0.0
将仅绑定到环回接口。
另请注意
仅当以 root 身份登录远程计算机时才能转发特权端口。
从手册页ssh
:
默认情况下,服务器上的 TCP 侦听套接字将仅绑定到环回接口。这可以通过指定
bind_address
.空的绑定地址或地址“*”表示远程套接字应侦听所有接口。bind_address
仅当启用服务器的 GatewayPorts 选项(请参阅 sshd_config(5))时,指定远程才会成功。
答案2
我在 Ubuntu 14.04 上遇到了这个问题(我尝试了和GatewayPorts clientspecified
)。GatewayPorts yes
/etc/ssh/sshd_config
相反,将其添加到我的sshd_config
工作中:
Match User !root
GatewayPorts yes
也就是说,我必须指定一个用户来匹配规则。