对于任何有类似问题的人(在远程系统上提交时转发用户的配置),我想总结一下受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”,但是当我解决了这个问题并且身份验证工作时,转发仍然不起作用。