我已经建立了一条到服务器的受限网络的反向 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
,您需要:
从主机 A 到主机 B 的隧道,即:
让主机 A 监听端口
8080
通过隧道从该端口发送流量
在主机 B (
aws
) 上,将来自隧道的流量重定向到本地(即在主机 B 上)端口15872
(我从您的评论中获取它;您可以选择任何可用端口;只需确保在所有端口中使用相同的端口即可)命令)
# Execute on host-A $ ssh -L 8080:localhost:15872 user@host-B
从主机 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 上创建一个监听套接字,并通过隧道将其转发ssh
到deviceIP
端口 80:
ssh -L 8080:deviceIP:80 user@aws