来自端口 80 的 SSH 隧道似乎被阻止

来自端口 80 的 SSH 隧道似乎被阻止

我不是服务器管理员,但由于我正在编写一些 Facebook Connect 程序,我需要一个端口 80 上的公开 URL 来转发到我的本地开发环境。因此,我有一个基于 Centos 的 Web 服务器,并且我已停止 httpd(和 nginx)服务,但当我尝试从端口 80 建立 SSH 隧道时,它不起作用。据我所知,它在任何其他端口上都可以工作。

这基本上是我正在运行的命令:

ssh -v -p 22 -nNT4 -R *:80:localhost:3000 username@http://myurl.com

端口 80 是否以某种方式绑定在服务器上?我必须释放它吗?我查看了一下,发现它可能与我的 sshd_config 中的 GatewayPorts 设置有关 - 目前设置为“是”。

提前感谢任何建议!

卡梅伦

答案1

作为普通(非 root)用户,您不能绑定到 <1024 的端口。

答案2

使用“netstat -lnp|grep ":80" 查看是否有任何东西在监听端口 80。

正如 Bill Weiss 提到的,您需要以 root 身份通过 ssh 连接到远程计算机,以便您有权限绑定到 1024 以下的端口。

此外,您需要在面向公众的服务器上的 sshd_config 中启用 GatewayPorts。否则,sshd 将只允许它绑定到环回地址。

GatewayPorts 指定是否允许远程主机连接到为客户端转发的端口。默认情况下,sshd 将远程端口转发绑定到环回地址。这可防止其他远程主机连接到转发端口。GatewayPorts 可用于指定 sshd 应允许远程端口转发绑定到非环回地址,从而允许其他主机连接。参数可以是no'' to force remote port forward- ings to be available to the local host only,yes'',以强制远程端口转发绑定到通配符地址,也可以是 clientspecified'' to allow the client to select the address to which the forwarding is bound. The default isno''。

还, 'http://www.myurl.com/' 在您的示例中也应该只是主机名(不带 http://)

答案3

您可以运行 nc -l 80 吗?如果有其他程序使用该端口,您应该会收到“nc:地址已在使用中”

相关内容