如何配置使用单个ssh帐户访问的mercurial服务器根据正在使用的密钥选择用户名?

时间:2012-05-25 09:58:20

标签: mercurial

我有几个mercurial服务器,人们正在使用单个用户hg推送更改,并且仅使用ssh公钥认证,每个用户都拥有自己的密钥。

如何配置服务器以便根据所使用的公钥选择推送的用户名?

有可能吗?如果没有,为什么以及有什么替代方案,所以我不必在我连接的每个帐户*机器上的.hgrc中配置用户名。

另外,请考虑其他用例:您在计算机上有root克隆的hg存储库,并且两个不同的人正在连接此计算机(以root用户身份),进行更改并尝试提交并推送更改。

这两个帐户使用相同的帐户,但它们使用不同的ssh密钥连接,因此您可能希望查看是谁执行此操作。目前,这些将显示为.hgrc

中配置的用户

1 个答案:

答案 0 :(得分:2)

“用于推送的用户名”,即推送时用于身份验证的用户名和密码,hg log显示的用户名有关

当您进行提交时,Mercurial会记录运行hg commit的用户的名称。这通常在~/.hgrc为该用户配置。此信息是变更集的一部分,以后不能更改。

对于您在hg commit登录时有多个不同管理员运行root的特定用例,我建议~/.hgrc中配置用户名。现代Mercurial将在您提交时中止。每次使用hg commit -u当然非常烦人,因此您可以通过配置HGUSER环境变量来设置用户名。这样就可以在不使用持久配置的情况下基于每个会话配置用户名。

要在执行ssh时通过HGUSER,请参阅Can I forward env variables over ssh?

当我使用此方案时,我只需按Ctrl-r并搜索HGUSER,即可在命令行历史记录中找到正确的用户名。你也可以在shell启动脚本中设置一些东西,用ssh-add -L查看密钥,并根据它设置正确的用户名。