我发现类似的情况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
我错过了什么?某种端口重定向?任何帮助将不胜感激!
答案 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]