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

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

大家好,我有一个项目服务器,位于企业数据中心。我可以通过端口 22 访问这台机器的 SSH。这台服务器上运行着一些虚拟机,而每台机器的背后都有许多其他操作系统在运行。现在,由于我位于数据中心防火墙后面,我的主管问我是否可以做点什么,让互联网上的许多人直接访问这些虚拟机。我知道,如果我被允许在 22 以外的端口上获取流量,那么我可以进行端口转发。但是,由于我不允许这样做,那么在这种情况下,有什么解决办法呢?想要连接的人可能是十足的白痴。他们可能只要在自己的机器上打开 putty 或甚至打开 filezilla 就很高兴了。我已经配置了一个 Apache 反向代理,用于将互联网流量重定向到这些主机上的虚拟机。但我不清楚对于 SSH,我能做什么。那么,有没有相当于 Apache 反向代理的东西,可以在这种情况下为 SSH 做类似的工作。

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

答案1

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

ssh -L0.0.0.0:8080:localhost:8080 you_username@server1

这将打开从端口 8080 的计算机到端口 8080 的服务器的连接,跳过中间的防火墙。假设您的 Apache 正在监听端口 8080。端口转发格式为监听 IP:本地端口:远程地址:远程端口。当然,对于单个服务器,您也可以使用

ssh -L0.0.0.0:8080:remote_server_address:8080 you_username@server1

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

您还需要参数

AllowTcpForwarding yes

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

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

答案2

也许你可以用类似的东西安全网关。它是一个开源的 Web 系统,它将使 ssh 隧道穿越防火墙,您甚至不需要打开端口。

相关内容