有什么简单的解决方案可以代理仅通过 SSH 访问的远程网络上的 HTTP 服务

有什么简单的解决方案可以代理仅通过 SSH 访问的远程网络上的 HTTP 服务

我有一个运行多个 Web 界面的系统,我只能通过 SSH 连接到这些界面。为了解决这个问题,我使用端口转发将每个 HTTP 应用程序端口转发到我的本地计算机。我希望能够从我的本地网络的其他计算机连接到此服务器,而无需在每台计算机上建立 SSH 会话。

我目前的模型是使用 nginx 作为代理,并创建一个 systemd 服务,该服务运行 SSH 并在本地转发端口以供 nginx 连接。这可以正常工作,但我很好奇这种情况下是否有更好的选择

答案1

无论如何,您都需要转发端口,因为它们无法直接访问。

nginx在这种情况下可能是最简单的,因为一旦配置了 nginx,您就不必自己建立端口转发。

--答案结束--


继续阅读另一种方法,但并不是那么简单。

如果你想尝试另一种方法,你可以使用 ssh 来充当袜子服务器进行转发并使用浏览器插件,例如 Firefox 的 FoxyProxy 或 Chrome 的 SwitchyOmega,在引用某些 IP 时使用它。上次我尝试时,FoxyProxy 需要 SOCKS4,而 SwitchyOmega 可以使用 SOCKS5。

此方法确实需要对所有尝试使用它的计算机进行更改...再次强调,这仅供参考。

在您可以访问的服务器上,该服务器也可以访问您感兴趣的 Web 服务,例如您现在运行 nginx 的服务器,运行

ssh -f -N -D 9999 -o GatewayPorts=yes localhost

9999可以是任何您有权建立连接的未使用的端口。

如果该系统重新启动,您也需要想办法在重新启动时自动运行,比如/etc/rc.local创建一个 systemd 服务。

SOCKS 代理还可以用于访问无法通过使用 ssh 和 ProxyCommand 直接访问的其他机器~/.ssh/config

#Host           some-ip-or-range-not-directly-accessible
Host            192.168.*
ProxyCommand    nc -X 5 -x socks-server:9999 %h %p
#                  -X 4 for SOCKS4
#                  socks-server is where you ran above ssh command

nc或者netcat很可能必须先安装。

相关内容