SSH 的“虚拟主机”

SSH 的“虚拟主机”

我们有一个远程 Xen 服务器,运行着很多客户机(在 Linux 上),只有几个可用的 IP。

每台客户机都应该可以通过 SSH 从外界直接访问。

目前,我们为每台客户机分配一个单独的域名,指向少数可用 IP 之一。我们还为该客户机分配一个端口号。

因此,要访问名为 的机器foo,应执行以下操作:

$ ssh foo.example.com -p 12345

...并访问名为bar

$ ssh bar.example.com -p 12346

foo.example.com和都bar.example.com指向同一个IP。

是否有可能以某种方式摆脱此配置中的自定义端口并配置 SSH 服务器,监听该 IP(或防火墙或其他在服务器端),这样它就会根据域地址将传入的连接路由到正确的客户机,以便后续工作按预期进行?

$ ssh foo.example.com 主机名 # 打印 foo
$ ssh bar.example.com hostname # 打印 bar

请注意,我确实了解.ssh/config相关的客户端配置解决方案,我们现在正在使用它。这个问题专门针对零客户端配置解决方案。

答案1

                         foo  
                        /
Client ----- Xen server
                        \
                         bar

听起来 SSH 网关就是您正在寻找的。

首先,在 Xen 服务器上创建 2 个新foo用户:bar

Xen # useradd foo
Xen # useradd bar

生成密钥对并将公钥复制到foo-serverbar-server

Xen # su - foo
Xen $ ssh-keygen
Xen $ ssh-copy-id -i ~/.ssh/id_rsa.pub foo-user@foo-server

bar(对用户执行相同操作)

现在,您可以从 Xen 服务器(SSH 网关)登录,foo-server并且bar-server无需输入密码。

下一步是让使用公钥Client进行身份验证:Xen server

Client $ ssh-keygen
Client $ ssh-copy-id -i ~/.ssh/id_rsa.pub foo@Xen

最后一步是Xen server打开与相应内部服务器的第二个连接。访问 Xen,切换到foo,打开~/.ssh/authorized_keys文件并更改:

ssh-rsa AAAAB3N...== user@clienthost

到:

command="ssh -t -t foo-user@foo-server" ssh-rsa AAAAB3N...== user@clienthost

示例结果:

$ ssh foo-user@Xen
Last login: Thu Nov 10 13:02:25 2011 from Client
$ id
uid=500(foo-user) gid=500(foo-user) groups=500(foo-user) context=user_u:system_r:unconfined_t
$ exit
logout

Connection to foo-server closed.
Connection to Xen closed.

$ ssh bar-user@Xen
Last login: Thu Nov 10 11:28:52 2011 from Client
$ id
uid=500(bar-user) gid=500(bar-user) groups=500(bar-user) context=user_u:system_r:unconfined_t
$ exit
logout

Connection to bar-server closed.
Connection to Xen closed.

答案2

是的,这是可能的,但我不知道有哪个 SSH 服务器或代理支持它。但是您不能使用您建议的语法。您必须在用户名中对所需的主机进行编码。例如ssh -u jsmith@foo foo.example.comfoo.example.com只提供 IP 地址。在端口 22 上运行的主 SSH 服务器必须根据用户名中 @ 后面的内容进行“路由”。

答案3

作为一种解决方案,您可以使用基于 bonjour、uPNP、DNS/srv 的 ssh 客户端/包装器,并通过这些协议宣传服务。请参阅:http://eric.windisch.us/software/zerossh/

答案4

我突然想到但答案似乎是否定的。

相关内容