像apache的VirtualHost一样,我想通过每个主机名路由虚拟环境

像apache的VirtualHost一样,我想通过每个主机名路由虚拟环境

我创建虚拟环境。

如何创建“ssh virtualhost”环境?

host - vm01(ssh01.host.com) 202.xx.xx.xx
     - vm01(ssh02.host.com) 202.xx.xx.xx(same IP)

远程控制[电子邮件保护]-> ssh01 ssh[电子邮件保护]-> ssh02

答案1

您期望用户登录后所处的环境有何不同?

在 Apache 世界中,当您连接到为虚拟主机配置的 IP 时,Apache 会检查该配置块内部,以查看 DocumentRoot 等内容是否被默认虚拟主机或默认服务器配置覆盖。

那么您想要通过两个主机名呈现的 unix 环境有何不同?

您上面使用的名称并不能清楚地表明主机操作系统后面是否有两个不同的虚拟机,或者是否只有一个。

如果是前者,那么仅使用一个外部 IP 地址就没有真正的方法了 - 要么您必须为主机提供两个 IP 并设置转发,以便一个 IP 上的端口 22 转到 vm01,另一个 IP 上的端口 22 转到 vm02 上的端口 22,或者您必须使用不同的端口,在这种情况下,主机上的端口 22 转到 vm02 端口 22,而主机上的端口 8022(例如)转到 vm02 上的端口 22。

如果是后者,那么您需要解释您希望用户登陆的两个地方之间的差异,以获得更好的反馈。

答案2

只需将这两个子域名指向同一个 IP 吗?

据我所知,sshd_config没有与<VirtualHost>httpd 指令等效的指令,允许您根据客户端用于连接的主机名创建完全不同的环境。

答案3

不,openSSH 没有虚拟主机等价物。如果您希望在 openssh 的配置文件中更改操作,那么您可以做的最好的事情就是在不同的端口上运行不同的 openSSHds。(例如 ssh01.host.com:22、ssh01.host.com:23)

答案4

您需要为您的虚拟机使用非标准 ssh 端口。

我在我的服务器上使用 openVZ,有三个虚拟机,VID 分别为 101、102、201。我认为,通过 101 端口 ssh 进入 101 VM,通过 102 进入 102 VM,依此类推,会很方便。要连接到硬件节点,您可以使用 22 端口。

因此我在硬件节点上的 iptables 中添加了以下路由规则:

#iptables -t nat -A PREROUTING -d x.x.x.x -p tcp -m tcp --dport 101 -j DNAT --to-destination 192.168.2.101:22 
#iptables -t nat -A PREROUTING -d x.x.x.x -p tcp -m tcp --dport 102 -j DNAT --to-destination 192.168.2.102:22 
#iptables -t nat -A PREROUTING -d x.x.x.x -p tcp -m tcp --dport 201 -j DNAT --to-destination 192.168.2.201:22
#/etc/init.d/iptables save

相关内容