0

我正在寻找一种方法来执行 HTTP Host: 标头的功能,但 SSH 除外。

想象一下,foo.example.com双方bar.example.com都决心1.2.3.4。我怎样才能发现登录是通过ssh git@foo.example.com而不是发生的ssh git@bar.example.com

我正在寻找$SSH_CONNECTION,但它只有客户端和服务器的 IP 地址,而不是主机名。

PS 我真正要问的是如何通过 SSH 传输使 git 虚拟主机工作。我的客户不是直接ssh,而是git调用ssh。我了解虚拟 git 托管可能可以通过 HTTP(使用 Host:)和 git-daemon(似乎被告知主机名是什么)工作。但是 SSH 呢?否则,我如何使(安全)提交在虚拟主机环境中工作?

如果不是:任何可以近似此的kludges?

4

2 回答 2

2

简单的答案是否定的,openSSH afaik 没有等效的虚拟主机。

问题实际上归结为您想向通过foo.example.com和登录的客户呈现什么不同bar.example.com

我猜您只是想提供 2 组独立的根目录,用于根据他们使用的主机为您的客户端托管 git 存储库。如果是这种情况,您可以要求每个用户使用不同的用户名,从而他们可以访问具有适当隔离权限的不同主目录。git只是使用SSH协议将文件存储在服务器上,所以它应该是真正透明的。

如果您的案例涉及在单个 Xen 或等效服务器上拥有多个 VM,那么您可以考虑按照本文中的描述从您的 Xen 服务器设置到多个 VM 的 SSH 网关。

于 2013-03-21T22:05:26.853 回答
0

未来的答案)去年似乎已经讨论过将其添加到 SSH 中。对于openssh实施的建议是使用环境变量,以便在服务器上运行的脚本可以知道正在访问哪个虚拟主机。

于 2014-03-19T17:36:08.847 回答