【问题标题】:How to access a host port (bind with ssh -R) from a container?如何从容器访问主机端口(与 ssh -R 绑定)?
【发布时间】:2016-09-27 08:57:10
【问题描述】:

使用 Docker 1.12.1,我在尝试访问使用 ssh -R 创建的主机端口时遇到了一种奇怪的行为。

基本上,我尝试从运行在服务器上的 docker 容器访问在本地计算机上的端口 12345 上运行的服务。

我打开了一个与ssh -R *:12345:localhost:12345 user@server 的ssh 连接以在server 上打开一个端口12345,该端口转发到我本地计算机上的端口12345

现在,当我在容器内尝试curl https://172.17.42.1:12345172.17.42.1 是从 docker 容器访问 docker 主机的 IP)时,我得到:

root@f6873fe1109b:/# curl https://172.17.42.1:12345
curl: (7) Failed to connect to 172.17.42.1 port 12345: Connection refused

但是在server 命令curl http://localhost:12345 成功(例如,没有连接被拒绝

server$ curl http://localhost:12345
curl: (52) Empty reply from server

我不太明白使用 ssh 完成的端口绑定与在服务器上使用 nc 进行的测试有何不同(它有效):

# on server
nc -l -p 12345
# inside a container
root@f6873fe1109b:/# curl http://172.17.42.1:12345
curl: (52) Empty reply from server

注意:容器以 docker run -it --rm maven:3-jdk-8 bash 启动。

如何让我的容器访问与 ssh 绑定对应的主机端口?

【问题讨论】:

  • 默认情况下 ssh -R 打开的端口只绑定到 localhost - 你需要使用-R '*:11443:server1:443' 让它绑定到其他接口上
  • 感谢您的建议,但似乎并没有奏效。我仍然看到curl: (7) Failed to connect to 172.17.42.1 port 11443: Connection refused
  • 我对您问题中的内容布局感到有些困惑。听起来你正在尝试做accessing host port from inside a container,所以这个答案在这种情况下可能会有所帮助,但我不是 100% 确定。
  • 我看到了这个问题/答案,但没有帮助。我试图简化我的问题。 PTAL。再次感谢。
  • ack,我刚刚意识到你正在使用-R,它绑定了server上的监听,而你想要的-L绑定了你的系统'正在 ssh-ing 来自。如果您使用-L,那么它应该可以正常工作

标签: linux docker ssh


【解决方案1】:

来自man ssh

-R [...]

...只有在启用服务器的 GatewayPorts 选项时,指定远程 bind_address 才会成功

还有man sshd_config

网关端口

指定是否允许远程主机连接到为客户端转发的端口。默认情况下,sshd(8) 将远程端口转发绑定到环回地址。这可以防止其他远程主机连接到转发端口。 GatewayPorts 可用于指定 sshd 应允许远程端口转发绑定到非环回地址,从而允许其他主机连接。参数可能是“no”强制远程端口转发仅对本地主机可用,“yes”强制远程端口转发绑定到通配符地址,或“clientspecified”允许客户端选择要访问的地址。转发是绑定的。 默认为“否”。

这意味着默认的 sshd 服务器安装只允许创建绑定到本地接口的转发。如果您想允许转发到其他接口然后回送,您需要在您的/etc/ssh/sshd_config 中将GatewayPorts 选项设置为yesclientspecified

【讨论】:

  • 非常感谢! NB ssh 服务必须在/etc/ssh/sshd_config 更改后使用sudo service ssh restart 重新启动
  • 还有一个注意事项:clientspecified 可能是比yes 更好的选择,因为它只会导致明确要求将其绑定到通配符地址的转发。 Whit yes 所有未指定绑定地址的转发都绑定到通配符地址。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多