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

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

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

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

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

我尝试了上面的 ssh 命令,然后将我的家庭计算机上的浏览器定向到aws:8080但没有加载任何页面...

答案1

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
    
  2. 从主机 C 到主机 B 的隧道,即:

    • 让主机 B 监听端口15872

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

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

    # Execute on host-C
    $ ssh -R *:15872:host-D:80 user@host-B
    

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

答案2

您不会将网络服务器重定向到您的浏览器 - 您会将请求从浏览器重定向到网络服务器。它是一个正向代理,而不是您需要的反向代理。

这将在您的客户端端口 8080 上创建一个监听套接字,并通过隧道将其转发sshdeviceIP端口 80:

ssh -L 8080:deviceIP:80 user@aws

相关内容