SSH 隧道抛出错误:bind [ip]:801: 无法分配请求的地址 channel_setup_fwd_listener_tcpip: 无法监听端口:801

SSH 隧道抛出错误:bind [ip]:801: 无法分配请求的地址 channel_setup_fwd_listener_tcpip: 无法监听端口:801

如果我将端口从服务器转发到我的本地主机(我使用另一台虚拟机上的 apache 上的 Web 服务器作为转发服务器),那么一切都不会出现问题。

ssh -L 801:192.168.0.115:80 [email protected]

但当尝试授予其他网络成员访问权限时,会发生错误

ssh -L 192.168.0.115:801:192.168.0.115:80 [email protected]

bind [192.168.0.115]:801: Cannot assign requested address 
channel_setup_fwd_listener_tcpip: cannot listen to port: 801 Could not request local forwarding.

当然,当我尝试访问端口 801 时,什么都没发生。我尝试使用大于 4000 的不同端口,当查看 netstat 时,没有端口被使用,我关闭了端口,但什么也没发生。

尝试使用反向 SSH 隧道时,没有给出任何错误,但也无法在虚拟机上打开 localhost:801

ssh -R 192.168.0.115:801:127.0.0.1:80 [email protected]

(仅限于建立隧道的 ssh 机器本身)

当尝试打开 SSH 调试器()时,它会输出以下内容:ssh -R 192.168.0.115:801:127.0.0.1:80 [email protected] -v

debug1: Remote: Forwarding listen address "192.168.0.115" overridden by server GatewayPorts 
debug1: remote forward success for: listen 192.168.0.115:801, connect 127.0.0.1:80 
debug1: Sending environment.

设置:已sshd_config更改:

Gateway yes
AllowTcpForwarding yes

(在所有计算机上)

尝试连接 IPv4 时,结果没有改变()ssh -4 -L 0.0.0.0:801:192.168.0.115:80 [email protected]

最初错误的设置可能存在错误,但重置所有机器并从头开始安装时,什么都没有改变。

答案1

对于本地转发,您需要-g在命令行上使用,或者启用GatewayPortsyes默认no,禁用).ssh/config/etc/ssh_config允许监听非本地主机地址:

ssh -g -L 192.168.0.115:801:192.168.0.115:80 [email protected]

ssh_config 手册人SSH

为了能够在进行远程转发时监听非本地主机 IP,您需要在远程服务器的 sshd_config 中启用它:设置GatewayPortsclientspecifiedyes(默认no,禁用)。请参阅sshd_config 命令

请注意,不仅是“网关”,而且是“网关端口“。顺便说一句,您收到的扩展错误消息中提到,由于此限制性设置,反向转发被覆盖。请仔细阅读您的错误消息!

另请注意,端口 801 是特权。您无法以普通用户身份收听它。当执行 SSH 本地端口转发 ( -L) 时,它受到客户端的约束;您需要承担该CAP_NET_BIND_SERVICE功能,例如以 root 身份或在 下运行 ssh 客户端授权绑定或类似的东西。-R但是,在执行 SSH 远程端口转发 ( ) 时,端口受 sshd 进程绑定将权限交给经过身份验证的用户,这样用户就需要是 root 用户(即直接以 root 身份连接到 SSH,哎哟),或者 sshd 需要在远程上承担相同的功能(这又很麻烦)。下面是更多的有关 Linux 功能(还有进一步的链接)。

选择 1024 以上的端口号要容易得多,也更安全。

答案2

1.)

ssh -L 801:192.168.0.115:80 [email protected]

它在当前机器上创建了一个套接字127.0.0.1:801。所有发往localhost:801(来自本地机器)的邮件都将通过 发.115:80.113

这看起来不错。

2.) 我假设你在与上一个命令相同的机器上发出了此命令

ssh -L 192.168.0.115:801:192.168.0.115:80 [email protected]

这将尝试绑定到.115:801本地机器,但该机器没有.115地址(似乎..)

3.)

ssh -R 192.168.0.115:801:127.0.0.1:80 [email protected]

此命令想要.115:801在服务器上远程创建一个套接字.113。我假设.113服务器没有.115地址...

我认为您想做以下事情:

ssh -L your_local_ip:801:192.168.0.115:80 [email protected]

在这种情况下,所有可以联系到的人your_local_ip:801都将被转发至.115:80通过.113

相关内容