gpt4 book ai didi

Git 提交不使用转发的 ssh 代理?

转载 作者:行者123 更新时间:2023-12-02 14:10:01 29 4
gpt4 key购买 nike

设置:

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

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

问题:

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

最佳答案

对于任何有类似问题的人(在远程系统上提交时转发用户的配置),我想总结一下我所采取的步骤,这些步骤是受 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_AUTHOR_EMAIL而不是 EMAIL在您的 ~/.ssh/config根据 Git documentation :

GIT_AUTHOR_EMAIL is the email for the “author” field.


EMAIL is the fallback email address in case the user.email configuration value isn’t set. If this isn’t set, Git falls back to the system user and host names.


所以在我的情况下 EMAIL在我的 ~/.ssh/config没有效果,因为 user.email在远程系统上设置。它现在适用于这一行:
SetEnv GIT_AUTHOR_NAME="your name" GIT_AUTHOR_EMAIL="your email"
还有一点需要注意:我也试图用 ssh -T git@github.com 来解决这个问题。 .但此检查的结果与转发问题无关。起初我看到“权限被拒绝”,但是当我解决这个问题并且身份验证工作时,转发仍然不起作用。

关于Git 提交不使用转发的 ssh 代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16202319/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com