使用 SSH 将 Http 流量从 A 传输到 B

使用 SSH 将 Http 流量从 A 传输到 B

我对网络还很陌生,正在尝试了解 SSH。

我有这个设置

设备A:在静态上提供 Web 应用程序192.X.X.X

设备B:可以通过以下方式访问 Web 应用192.X.X.X

设备C:已连接B但位于不同的网络上10.X.X.X,只能通过 SSH 连接到B

现在我的问题是,我能否以某种方式将 HTTP 流量192.X.X.X从隧道传输BC,或者这是否可能。

也就是说,我可以在浏览器中输入CIP 并查看 Web 应用程序,就像在B

答案1

是的,使用-L参数将本地套接字转发到远程套接字。

例如,在主机 C 上运行以下命令:

ssh -L "${LOCAL_PORT}:${REMOTE_HOST}:${REMOTE_PORT}" "${HOST_B}"

然后,在主机 C 上导航到http://localhost:${LOCAL_PORT}/(或https://根据情况)。

如果您需要从主机 C 网络上的另一台设备访问此服务,那么您也可以提供参数-g,这将允许其他主机也进行连接(即:绑定到0.0.0.0而不是默认的127.0.0.1)。请注意,这是未经身份验证的,可能会对您的用例造成安全风险。例如:

ssh -gL "${LOCAL_PORT}:${REMOTE_HOST}:${REMOTE_PORT}" "${HOST_B}"

在上面的例子中,替换变量如下:

  • ${LOCAL_PORT}:如果您没有权限,请选择 1024 以上的端口,选择常用端口可能会导致主机 C 上已运行的服务出现问题
  • ${REMOTE_HOST}:主机 A 的 IP 或名称
  • ${REMOTE_PORT}:主机A上运行的服务的端口

相关内容