我有一个运行多个 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
很可能必须先安装。