【问题标题】:Git commits not using forwarded ssh agent?Git 提交不使用转发的 ssh 代理?
【发布时间】:2013-04-24 21:15:00
【问题描述】:

设置:

我们有几个用户可以访问 Github 存储库。 这些用户都具有在各种服务器上的部署权限。 服务器无权访问 Github 存储库 - 它们使用 ssh-agent 转发来获取用户的凭据。 将数据从 Github 传输到服务器时,一切正常。

为了问责,部署将一些数据提交到存储库。这一切都是脚本化的,并在服务器端运行,无需用户干预。

问题:

Git 提交将提交者名称和电子邮件设置为服务器上设置的任何内容(如果未明确设置,则默认为服务器用户名)。有没有办法强制 Git(作为发送者)或 Github(作为接收者)将提交与转发的用户凭据相关联?

【问题讨论】:

  • 试试ssh -T git@github.com它会告诉你使用了哪个github用户。虽然我不能让它使用正确的用户转发自己。

标签: git github ssh git-commit


【解决方案1】:

对于任何有类似问题的人(在远程系统上提交时转发用户的配置),我想总结一下受this useful post启发而采取的步骤:

确保在/etc/ssh/sshd_config 中的远程系统上进行以下设置:

# Allow client to pass locale environment variables
AcceptEnv LANG LC_* GIT_* EMAIL

添加到用户系统上的~/.ssh/config

Host *
    # provide credentials for github push
    ForwardAgent yes
    # provide username/email for git commit
    SetEnv GIT_AUTHOR_NAME="your name" EMAIL="your email"

要在 vscode 设置中使用带有 remote-ssh 的 Visual Studio Code:

"git.requireGitUserConfig": false

尽管有这些步骤,我的提交仍然与远程系统上配置的电子邮件地址相关联。这是由于远程系统上 git 用户的电子邮件配置,可以通过 git config --global -l 进行检查:

user@server:~/repo$ git config --global -l
user.email=user@domain.com
user.name=User name
...

如果在远程系统上为 git 用户设置了电子邮件地址,您必须根据Git documentation~/.ssh/config 中使用GIT_AUTHOR_EMAIL 而不是EMAIL

GIT_AUTHOR_EMAIL 是“作者”字段的电子邮件。

EMAIL 是未设置 user.email 配置值的备用电子邮件地址。如果未设置,Git 将回退到系统用户名和主机名。

所以在我的情况下,我的~/.ssh/config 中的EMAIL 没有效果,因为设置了远程系统上的user.email。它现在适用于这一行:

SetEnv GIT_AUTHOR_NAME="your name" GIT_AUTHOR_EMAIL="your email"

还有一点需要注意:我也在尝试用ssh -T git@github.com 解决这个问题。但此检查的结果与转发问题无关。起初我看到“Permission denied”,但是当我解决了这个问题并且身份验证工作时,转发仍然不起作用。

【讨论】:

    【解决方案2】:

    您可以尝试在服务器上设置一个钩子,在接收时触发(例如,这个GitHubHook: a GitHub Post-Receive Deployment Hook),它会:

    • 修改本地.git/config文件
    • 在上述配置文件中添加用户名和用户邮箱

    这将假定部署提交在下一次从 GitHub 推送到服务器之前完成,否则,将使用错误的凭据。

    如果上一点是一个问题,那么您可以通过以下方式改进它:

    • 按照部署顺序将这些凭据存储在其他地方,
    • 并确保使用 git commit --author='AUserName <some@email.com> 完成部署提交,并根据记录的顺序从单独的文件中提取名称和电子邮件。

    在最后一种情况下,无需修改本地配置:您可以使用正确的参数构建 git commit 命令,而不是依赖本地配置文件内容。

    【讨论】:

      猜你喜欢
      • 2018-09-14
      • 1970-01-01
      • 2021-09-09
      • 2014-02-26
      • 2012-08-20
      • 2019-07-12
      • 2015-07-09
      • 1970-01-01
      • 2012-08-10
      相关资源
      最近更新 更多