我需要一个 SSH 反向代理解决方案

Bon*_*ond 10 ssh reverse-proxy ssh-tunnel linux-networking

嗨,这是一种情况,我在公司数据中心有一台用于项目的服务器。我在端口 22 上可以通过 SSH 访问这台机器。在这台服务器上运行着一些虚拟机,然后在许多其他操作系统正在运行的每件事的背后。现在,由于我在数据中心防火墙后面,我的主管问我是否可以做一些事情,让互联网上的许多人直接访问这些虚拟机。我知道如果我被允许在 22 以外的端口上获得流量,那么我可以进行端口转发。但是由于我不允许这样做,所以在这种情况下可以解决什么问题。想要连接的人可能完全是白痴。他们可能只是在他们的机器上打开腻子就很高兴,甚至可能是 filezilla。

我手上没有防火墙,也没有打开 22 以外的任何端口,事实上,即使我要求他们也不允许打开。2 次 SSH 不是我的主管想要的东西。

Oll*_*lli 5

您应该打开从您的计算机到数据中心服务器的 ssh 隧道。我们将其命名为“server1”。如果您使用的是 openssh,则只需运行

ssh -L0.0.0.0:8080:localhost:8080 you_username@server1
Run Code Online (Sandbox Code Playgroud)

这将打开从您的计算机的 8080 端口到服务器的 8080 端口的连接,跳过中间的防火墙。假设您的 apache 正在侦听端口 8080。端口转发格式是侦听 IP:local port:remote address:remote port。当然对于单个服务器,您也可以使用

ssh -L0.0.0.0:8080:remote_server_address:8080 you_username@server1
Run Code Online (Sandbox Code Playgroud)

请注意 -L 参数中的 localhost 是相对于 server1 的。换句话说,服务器看到来自本地主机的连接,而实际上这些连接是通过 ssh 连接来自您的计算机。

您还需要参数

AllowTcpForwarding yes
Run Code Online (Sandbox Code Playgroud)

在服务器的 ssh 配置中(通常是 /etc/ssh/sshd_config)。

在此之后,其他人可以通过端口 8080 连接到您的计算机以通过 Apache 反向代理获取连接。如果你需要通用代理(这样用户可以选择地址,而不仅仅是Apache配置中的特定地址)你应该在server1上安装squid并使用ssh隧道到squid端口。


归档时间:

查看次数:

31049 次

最近记录:

12 年,11 月 前