使用SSH隧道转发访问防火墙后面的网站

时间:2016-04-06 18:49:38

标签: ssh portforwarding

我发现类似的情况in this topic,但它引用了ssh,我需要转发访问网络服务器。

现在看起来如何:

[私人服务器] - 在路由器和防火墙后面,通过公共IP无法访问

[中间服务器] - 公共IP,端口打开

[用户] - 通过网络浏览器连接到中间服务器,想要从私人服务器获取网站

我已经做过的事情:

ssh -N -R 8888:localhost:80 root@[middle server ip]

现在我可以从中间服务器访问私人服务器,例如。通过:

curl http://localhost:8888

所以隧道工作正常。

问题是,当我(作为用户)输入[中间服务器IP]:8888时,我收到的只是ERR_CONNECTION_REFUSED

我错过了什么?某种端口重定向?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

此行为由选项GatewayPorts(默认为off)控制。来自ssh_config的手册页:

  

<强> GatewayPorts

     

指定是否允许远程主机连接到为客户端转发的端口。默认情况下,sshd(8)将远程端口转发绑定到环回地址。这可以防止其他远程主机连接到转发端口。 GatewayPorts可用于指定sshd 允许远程端口转发绑定到非环回地址,从而允许其他主机连接。该参数可能为“no”以强制远程端口转发仅对本地主机可用,“yes”强制远程端口转发绑定到通配符地址,或“clientspecified”允许客户端选择其中的地址转发是绑定的。默认为“no”。

你还需要把

GatewayPorts yes

到您的sshd_config,并明确指定本地地址:

ssh -N -R [middle server ip]:8888:localhost:80 root@[middle server ip]

ssh -N -R *:8888:localhost:80 root@[middle server ip]