(远程)SSH 服务器remote
在(远程)127.0.0.1 端口 20001 上运行服务。我想通过 SSH 端口转发在本地提供此服务:
ssh -vvv -4 -L 20001:127.0.0.1:20001 remote
使用此命令可以很好地进行端口转发和访问服务。
但是,隧道绑定到我的本地计算机上的 127.0.0.1,因此只能在运行 SSH 命令的本地计算机上访问远程服务。我希望隧道绑定到 0.0.0.0,以便通过连接到本地计算机端口 20001,在我的本地 LAN 中可以使用远程服务。
该选项的联机帮助页-L
提到:
默认情况下,本地端口根据 GatewayPorts 设置进行绑定。然而,可以使用显式的bind_address 将连接绑定到特定地址。 “localhost”的bind_address 表示侦听端口仅限本地使用,而空地址或“*”表示该端口应可从所有接口使用。
来源:https://manpages.debian.org/bookworm/openssh-client/ssh.1.en.html#L
所以我添加了GatewayPorts=yes
设置并尝试了两者
ssh -vvv -4 -o GatewayPorts=yes -L 20001:127.0.0.1:20001 remote
也
ssh -vvv -4 -o GatewayPorts=yes -L *:20001:127.0.0.1:20001 remote
但我收到以下错误:
debug1: Local connections to *:20001 forwarded to remote address 127.0.0.1:20001 debug3: channel_setup_fwd_listener_tcpip: type 2 wildcard 1 addr NULL debug1: Local forwarding listening on 0.0.0.0 port 20001. listen: Operation not permitted listen [0.0.0.0]:20001: Operation not permitted channel_setup_fwd_listener_tcpip: cannot listen to port: 20001 Could not request local forwarding.
如何将转发的本地端口绑定到 0.0.0.0 而不是 127.0.0.1?错误从何而来?
- 当绑定到127.0.0.1时,该端口可用。尽管如此,我还是仔细检查了
netstat
该端口未被使用。 - 它对运行 SSH 命令没有帮助
sudo
。 - 我假设只有当您想在远程端使用绑定 0.0.0.0 的远程端口转发时才需要在服务器上进行
GatewayPorts=yes
设置。sshd_config
无论如何,我更改了服务器配置,重新启动了服务器,正如预期的那样,这对我用于本地端口转发的 SSH 命令没有影响。