【问题标题】:Access localhost of host C, from host A, via host B with ssh使用 ssh 从主机 A 通过主机 B 访问主机 C 的 localhost
【发布时间】:2017-05-01 07:32:32
【问题描述】:

对于一个项目,我必须使用 ssh 从我的计算机 (host_A) 通过另一台计算机 (host_B) 访问计算机 (host_C) 的 localhost apache 服务器。

我已经成功通过 host_B 连接到 host_C 和 host_C:

ssh username_host_C@host_C

在我的.ssh/config 文件中:

Host host_C
ProxyCommand ssh username_host_B@host_B -W %h:%p

所以我尝试使用以下命令在浏览器中创建一个 ssh 隧道以访问地址为 http://localhost:8080 的 host_C 的本地网络服务器:

ssh -L 8080:host_C:80 username_host_B@host_B -N

当我连接到http://localhost:8080/ 时它不起作用并在终端中显示:

debug1: Connection to port 8080 forwarding to host_C port 80 requested.
debug1: channel 4: new [direct-tcpip]

【问题讨论】:

  • “它不起作用” 它在什么方面不起作用?调试消息表明正在转发连接。你当时有什么问题?详细而具体。
  • 这就是终端告诉我的全部内容。我的浏览器卡在“等待本地主机”

标签: ssh ssh-tunnel tunneling


【解决方案1】:

您正在连接到 B 并尝试从那里到达 host_C:80——host_C 的公共地址上的端口 80。如果您的服务器只在 C 上的 localhost 上侦听,那将无法正常工作——您需要使用 ssh 连接到 C,然后转发到 localhost:80。类似的东西

ssh -L 8080:localhost:80 username_host_C@host_C -N

应该这样做,假设您可以连接到 host_C

【讨论】:

  • 在 host_A 上,命令 ssh -L 8080:host_C:80 username_host_B@host_B -N 告诉我 Local connections to LOCALHOST:8080 forwarded to remote address host_C:80 然后在 host_C 上,命令 ssh -L 80:localhost:80 username_host_C@host_C -N -v 告诉我 Local connections to LOCALHOST:80 forwarded to remote address 127.0.0.1:80。我可以在 host_A 的终端上看到一个连接被转发,但在 host_C 的终端上什么也没有,并且浏览器仍然停留在“等待本地主机”。
  • -L 80:localhost:80 没有意义,因为它将 localhost:80 转发到 localhost:80 循环中 - 如果您已经有服务器在 localhost:80 上侦听,则应该会失败
猜你喜欢
  • 2015-11-27
  • 2018-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-28
  • 2014-03-15
  • 1970-01-01
  • 2023-03-30
相关资源
最近更新 更多