![是否为 NAT 后面的虚拟服务器提供 root ssh 访问权限?](https://linux22.com/image/616798/%E6%98%AF%E5%90%A6%E4%B8%BA%20NAT%20%E5%90%8E%E9%9D%A2%E7%9A%84%E8%99%9A%E6%8B%9F%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%8F%90%E4%BE%9B%20root%20ssh%20%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90%EF%BC%9F.png)
我们是一家网络托管公司。我们有 4 台服务器,它们在 CentOS 上运行 OpenVZ。每台服务器上运行着大约 50 个容器。
我们计划为部分客户(大约 50 位)提供 ssh 根访问权限。所有这 50 位用户都将开发和托管一个网站的模块。例如,有一个网站xyz.com
现在将有一个模块,xyz.com/module1
它将module1
由不同的开发人员托管并托管在不同的容器上。同样,还会有其他由不同开发人员开发并托管在其他容器上的模块。问题是这些容器在 NAT 防火墙后面运行。有一个公共 IP xyz.com
。
我们不想进行端口转发,因为它会在防火墙中打开不必要的端口。
我们考虑将所有 ssh 请求转发到xyz.com
单个容器 (ssh-temp),然后仅允许从 ssh-temp 容器 ssh 到其他容器。但这种方法不可行,因为用户将拥有对其容器的 root 访问权限并可以修改防火墙规则。
有没有更好的方法来执行此任务。我正在考虑一个方案,让用户可以运行以下命令:
ssh [email protected]
然后用户将被重定向到该特定模块。我该如何实现这样的方案?
谢谢
编辑:我确实意识到为网络内的容器提供根访问权限是一个坏主意,但目前这是一种强制,而不是一种选择。
答案1
也许您正在寻找像 SSH 网关这样的东西?
SSH 网关的工作原理是根据 ssh 密钥强制以特定用户名 ssh 到另一台主机。假设内部主机和互联网之间有一个网关盒,上面正在运行 ssh。-http://quark.humbug.org.au/publications/ssh/ssh-tricks.html
这个问题与此相关: 是否有基于名称的虚拟主机 SSH 反向代理?