从第三台机器访问 SSH 隧道
Accessing SSH tunnel from third machine
我已经设置了以下 ssh 隧道,以便从家里访问办公室机器:
[从办公室机器执行] 设置连接 Office -> Home(因为 Home 有 public IP)。设置从办公室机器到家里的反向隧道:
ssh -CNR 19999:localhost:22 homeuser@home
[从家里的机器执行] 从家里连接到办公室。使用步骤 1 中的隧道:
ssh -p 19999 officeuser@home
现在,我如何才能从第三台机器而不是家里的机器访问我办公室的机器?我可以从互联网上的任何机器访问我家的机器。
谢谢
来自 -R
参数的 SSH 文档:
By default, TCP listening sockets on the server will be bound to
the loopback interface only. This may be overridden by specify‐
ing a bind_address. An empty bind_address, or the address ‘*’,
indicates that the remote socket should listen on all interfaces.
Specifying a remote bind_address will only succeed if the
server's GatewayPorts option is enabled (see sshd_config(5)).
所以你必须使用:
ssh -CNR 0.0.0.0:19999:localhost:22 homeuser@home
如果您在家庭服务器上使用 OpenSSH sshd
服务器,您需要将 /etc/ssh/sshd_config
中的 GatewayPorts
选项设置为 yes
。
我已经设置了以下 ssh 隧道,以便从家里访问办公室机器:
[从办公室机器执行] 设置连接 Office -> Home(因为 Home 有 public IP)。设置从办公室机器到家里的反向隧道:
ssh -CNR 19999:localhost:22 homeuser@home
[从家里的机器执行] 从家里连接到办公室。使用步骤 1 中的隧道:
ssh -p 19999 officeuser@home
现在,我如何才能从第三台机器而不是家里的机器访问我办公室的机器?我可以从互联网上的任何机器访问我家的机器。
谢谢
来自 -R
参数的 SSH 文档:
By default, TCP listening sockets on the server will be bound to the loopback interface only. This may be overridden by specify‐ ing a bind_address. An empty bind_address, or the address ‘*’, indicates that the remote socket should listen on all interfaces. Specifying a remote bind_address will only succeed if the server's GatewayPorts option is enabled (see sshd_config(5)).
所以你必须使用:
ssh -CNR 0.0.0.0:19999:localhost:22 homeuser@home
如果您在家庭服务器上使用 OpenSSH sshd
服务器,您需要将 /etc/ssh/sshd_config
中的 GatewayPorts
选项设置为 yes
。