Git:git@gitlab.com:当我按下"synchronize changes"按钮时权限被拒绝(公钥)



我使用windows和cmder,并将默认终端设置为cmder的bash术语(我相信这是cmder附带的任何版本的git for windows(
我还有一个受密码保护的~/.ssh/id_ed25519 ssh密钥文件。

这是我的~/.ssh/config文件,尽管我已经尝试了该文件的几乎所有可能的设置。

Host gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_ed25519`

我也试过

Host *
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_ed25519`

我已经在这方面工作了很长时间,似乎没有任何关于这个话题的好信息。无论我如何设置,它总是说"Git:git@gitlab.com:权限被拒绝(公钥("当我按下左下角的同步更改按钮时。

我已经尝试了我在许多论坛上找到的一切,包括确保"remote.SSH.showLoginTerminal":设置为"true",以及几乎所有可能的~/.ssh/config配置。

当我从终端运行"git pull"或"git push"时,它会提示我输入密钥文件的密码,然后我键入密码,它就可以正常工作了
由于某种原因,每当我点击同步更改按钮时,我都会收到相同的错误"Git: git@gitlab.com: Permission Denied (publickey).">

此外,我已经运行了"ssh代理",并将我的密钥文件作为标识添加到ssh代理中。因此,当我键入"ssh-add -l"时,它确实会给我正确的密钥文件信息。

因此,总结一下关键事实:

  1. 当我运行gitpull/push/…时。。。,它会提示我输入密码,效果很好
  2. 当我按下"同步更改"时,会显示错误信息Git: git@gitlab.com: Permission Denied (publickey)

首先检查VSCode在拉或推时使用的远程URL:
Ctrl+Shift+p:Git:显示Git输出

仔细检查本地存储库使用的远程URL

cd /path/to/repo
git remote -v

我将使用作为URL

git remote set-url origin gitlab.com:<me>/<myrepo>

不需要git@,因为~/.ssh/config应该为您提供它
实际上,我会在~/.ssh/config文件中将Host条目从gitlab.com更改为gitlab和:

git remote set-url origin gitlab:<me>/<myrepo>

这样,您就可以确保使用SSH配置文件。

我也会用测试身份验证

ssh -T gitlab
ssh -Tvvv gitlab

(只有在第一个表单失败时才使用第二个表单(

最新更新