【问题标题】:How to configure a mercurial server accessed using a single ssh account to pick usernames based on the key being used?如何配置使用单个 ssh 帐户访问的 mercurial 服务器以根据正在使用的密钥选择用户名?
【发布时间】:2012-05-31 21:53:29
【问题描述】:

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

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

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

另外,考虑一下其他用例:你有一个由 root 在机器上克隆的 hg 存储库,两个不同的人正在连接这台机器(以 root 身份),进行更改并尝试提交和推送更改。

这两个使用相同的帐户,但他们使用不同的 ssh 密钥连接,所以你会想看看是谁做的。目前这些将显示为 .hgrc 中配置的用户

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    “用于推送的用户名”,即推送时认证使用的用户名和密码与hg log显示的用户名无关

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

    对于几个不同的管理员运行hg commit 并以root 登录的特定用例,我建议不要~/.hgrc 中配置用户名。当您提交时,Modern Mercurial 将中止。每次都使用hg commit -u当然很烦人,所以幸运的是可以通过配置HGUSER环境变量来设置用户名。这样您就可以在每个会话的基础上配置用户名,而无需使用持久配置。

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

    当我使用这个方案时,我只是通过按 Ctrl-r 并搜索 HGUSER 在命令行历史记录中找到了正确的用户名。您可能还可以在 shell 启动脚本中设置一些内容,在其中查看带有 ssh-add -L 的密钥并基于此设置正确的用户名。

    【讨论】:

    • 不过,我不认为这是一种解决方案,因为我和其他人确实使用同一台计算机提交到用户名不同的私有或公共存储库。
    猜你喜欢
    • 2019-06-12
    • 2018-02-21
    • 2020-05-13
    • 2015-06-28
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    相关资源
    最近更新 更多