基本上,我有几个不同的 Centos7 LAMP 堆栈在不同的虚拟机(在 xenserver 上)和 openSSH 上运行。为了安全起见,我还运行了几个中间代理身份验证服务器(一个用于 HTTP,一个用于 SSH,一个用于 SFTP),这样所有的虚拟机都可以在相同的端口上运行。HTTP 代理正在运行,但我在设置 SFTP 代理时遇到了麻烦。我希望客户端根据其用户名通过隧道连接到适当的 VPS。
我尝试过很多不同的方法,研究过几种不同的方法试图让它发挥作用,但都无济于事。
对于此示例,我们假设有人尝试通过我的外部 IP(12.345.678.90)在端口 80 上查看 vps1.com。首先,他们到达路由器(该端口将他们转发到 HTTP 代理),然后 HTTP 代理通过 VirtualHosts 将它们转发到正确的本地计算机。我们假设 vps1.com 的本地 IP 为 192.168.1.10,而 vps2.com 的本地 IP 为 192.168.1.20。它们被转发到正确的本地 IP 并提供正确的内容。太好了,这部分工作正常。
现在我们假设 vps1.com 的网站管理员想要登录并更改他的网站。他将以用户 johnVPS1 的身份在 SFTP 客户端上登录到 12.345.678.90 的端口 2222。路由器成功将他端口转发到 SFTP 代理(位于 192.168.1.7)。现在 SFTP 代理应该将他隧道化或转发到正确的 VPS,以便他可以编辑他的网站,但他将无法访问其他任何内容。
External IP 12.345.678.90
Router
---------------------------------------------
/ \
Port 80 / \ Port 2222
/ \
/ \
HTTP Proxy SFTP Proxy
/ \ / \
vps1.com / \ vps2.com johnVPS1 / \ billVPS2
/ \ / \
192.168.1.10:80 192.168.1.20:80 192.168.1.10:2222 192.168.1.20:2222
到目前为止我尝试过的一些方法 ---
- 将 SFTP 代理服务器上的用户 ChrootDirectory 设置为相应服务器的 SSHFS 挂载目录
- 将 SFTP 代理服务器上的用户 ChrootDirectory 设置为已挂载目录的符号链接目录。
- 在代理服务器上... ssh -R 2222:192.168.1.10:2222(这只是给我 SFTP 帮助菜单,我想我搞砸了一些东西)
- 在代理服务器上... ssh -L 2222:localhost:2222[电子邮件保护]-p 2222(这打开了到 192.168.1.10 的 SSH,但当我远程登录时似乎没有转发)
- 在 /etc/ssh/sshd_config 中使用 Match User 和 PermitOpen 192.168.1.10:2222
- 将 GatewayPorts 更改为是
请问,有人能给我指点迷津吗?我是不是全都搞错了,还是我已经很接近正确答案了,只是漏掉了什么?我花了几天时间才弄清楚,如果有人能给我指点迷津,我将不胜感激!