如何通过 ssh 隧道重定向受限网络中的网站

std*_*err 1 ssh ssh-tunneling http forwarding

我已经建立了一个反向 ssh 隧道,进入到aws服务器的受限网络,即访问它,我 ssh 进入aws服务器,然后从那里我可以通过某个自定义端口访问受限网络中的机器。

在这个受限网络上,有些设备可以通过 Web 浏览器进行配置。

我相信我可以做一些事情,比如ssh -R 8080:deviceIP:80 user@aws将它转发到aws机器,但我仍然无法访问它(除了通过非常慢的远程 X 之外)。如何通过管道deviceIP:80连接到家里的浏览器aws

我已经尝试了上面的 ssh 命令,然后将我家用电脑上的浏览器定向到aws:8080但没有加载任何页面......

fra*_*san 5

SSH 隧道可用于跨越不安全的网络,在连接位于不同网络上的两个端点时提供端到端加密。

据我所知(感谢评论),您拥有的是:

  • 本地主机-A:您的localhost, 在您的本地网络上(可能在防火墙/NAT 后面)

  • 可公开访问的主机 B:aws服务器

  • 非公开可访问的主机 C:在受限制的远程网络上(可能在防火墙/NAT 后面)

  • 非公开可访问的主机 D:您称为 的主机deviceIP,它侦听端口80并位于远程受限网络上

如果要将主机 A 连接到主机 D,让浏览器通过端口访问它80,则需要:

  1. 从主机 A 到主机 B 的隧道,即:

    • 让主机 A 监听端口 8080

    • 通过隧道从该端口发送流量

    • 在主机 B ( aws) 上,将来自隧道的流量重定向到本地(即主机 B)端口15872(我从您的评论中获取了它;您可以选择任何可用端口;只需确保使用相同的端口即可命令)

    # Execute on host-A
    $ ssh -L 8080:localhost:15872 user@host-B
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从主机 C 到主机 B 的隧道,即:

    • 让主机 B 监听端口 15872

    • 通过隧道从该端口发送流量

    • 在主机 C(您的 Linux 服务器)上,将该流量重定向到80主机 D 上的端口

    # Execute on host-C
    $ ssh -R *:15872:host-D:80 user@host-B
    
    Run Code Online (Sandbox Code Playgroud)

这样,在端口上对主机 A 的请求8080将通过隧道传输到主机 B,重定向到15872同一主机 B 上的端口,通过隧道传输到主机 C 并在主机 C 上重定向到主机80D 的端口。

  • @cerr 你的网络拓扑对我来说并不完全清楚。您是否真的试图通过建立到公共可用主机 (B) 的 2 个不同隧道来将您的主机 (A) 连接到不可直接访问的远程主机 (C)?如“A -ssh> B <ssh-C”?如果是这样,对不起,我误解了你的问题 - 我会更新我的答案。 (2认同)