SSH 反向隧道:绑定地址被忽略

SSH 反向隧道:绑定地址被忽略

我正在尝试使用 SSH 将一个站点中的服务器配置为另一个站点中多个服务器的代理。该服务器在其本地网络中有一个物理接口:

eth0 10.1.1.10

该服务器有多个虚拟接口创建如下:

server$ ifconfig eth0:0 10.1.1.200 netmask 255.255.255.128 broadcast 10.1.1.255

我已经验证,在本地网络中,通过将侦听器绑定到两者,此虚拟接口与实际接口不同。这可以通过在以下位置启用 ip 转发来实现/etc/sysctl.d/01-ip_forwarding.confnet.ipv4.ip_forward = 1

举个例子,这是可行的,生成两个不同的文件:

client$ curl 10.1.1.10 > 10.txt
client$ curl 10.1.1.200 > 200.txt

我已在以下位置启用网关端口/etc/ssh/sshd_configGatewayPorts yes

我从远程服务器运行此命令:

remote$ ssh -N -R 10.1.1.200:443:remote:443 user@server

然后我使用 netstat 检查监听端口:

server$ nestat -tln
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:443            0.0.0.0:*               LISTEN
tcp6       0      0 :::443                 :::*                    LISTEN

(我删除了不相关的行)

我希望它绑定到 10.1.1.200:443,但它却绑定到 0.0.0.0:443。

为什么它无法绑定到正确的 IP?

答案1

您必须在服务器上设置为(GatewayPortsclientspecifiedsshd_config,才能将远程隧道绑定到任何接口。根据sshd_config(5) 的手册页

GatewayPorts可用于指定 sshd 应允许远程端口转发绑定到非环回地址,从而允许其他主机连接。该参数可以no强制远程端口转发仅对本地主机可用,yes强制远程端口转发绑定到通配符地址,或clientspecified允许客户端选择转发绑定到的地址。默认值为no

相关内容