我使用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
"时,它确实会给我正确的密钥文件信息。
因此,总结一下关键事实:
- 当我运行gitpull/push/…时。。。,它会提示我输入密码,效果很好
- 当我按下"同步更改"时,会显示错误信息
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
(只有在第一个表单失败时才使用第二个表单(