我正在一台Windows 10 Pro机器上尝试进行git pull,而不必每次都输入我的SSH密码。密钥对已生成,并添加了公钥到我的GitLab帐户中。
当我执行
我已经运行了ssh代理并添加了身份(通过运行
在终端中,我可以运行git命令(例如
在Visual Studio Code中,当我点击GUI按钮与源代码库同步时,出现错误![enter image description here](https://istack.dev59.com/R5MFb.webp)
这很可能是因为它没有提示输入口令,但需要一个。当我点击“打开Git日志”或“显示命令输出”时,我可以看到尝试的命令。在VSCode中的终端或其他终端类型应用程序中运行完全相同的命令后,我会被提示输入口令,输入正确的口令后,操作成功。
git远程origin url是以此处描述的SSH URL格式;它不是HTTPS URL。同一问题的第二个最赞成的答案和另一个更低的答案表明,一旦能够执行ssh命令而无需口令,git命令也可以无需口令运行,但这并不是我在这里观察到的情况。
如何让Git使用存储在ssh-agent中的密码短语,而不是每次提示?
在“服务”GUI中,我可以看到“OpenSSH身份验证代理”正在运行,在PowerShell中如果我执行Get-Service ssh-agent
,我会看到以下信息,确认相同的信息:
Status Name DisplayName
------ ---- -----------
Running ssh-agent OpenSSH Authentication Agent
当我执行
ssh -T git@gitlab.com
时,我会收到“欢迎来到Gitlab”的消息,表示成功建立了ssh连接,而不需要输入密码。我已经运行了ssh代理并添加了身份(通过运行
svn add
,输入我的密码并获得成功消息)。在同一终端中运行“ssh -T git@gitlab.com”成功,而不需要输入密码。在终端中,我可以运行git命令(例如
git push
或git pull
),每次都会提示我输入密码,并且操作成功。在Visual Studio Code中,当我点击GUI按钮与源代码库同步时,出现错误
git@gitlab.com: Permission denied (publickey,keyboard-interactive).
![enter image description here](https://istack.dev59.com/R5MFb.webp)
这很可能是因为它没有提示输入口令,但需要一个。当我点击“打开Git日志”或“显示命令输出”时,我可以看到尝试的命令。在VSCode中的终端或其他终端类型应用程序中运行完全相同的命令后,我会被提示输入口令,输入正确的口令后,操作成功。
git远程origin url是以此处描述的SSH URL格式;它不是HTTPS URL。同一问题的第二个最赞成的答案和另一个更低的答案表明,一旦能够执行ssh命令而无需口令,git命令也可以无需口令运行,但这并不是我在这里观察到的情况。
我的~./ssh/config
文件条目如下:
User git
Hostname gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id_ed25519
AddKeysToAgent yes
如何让Git使用存储在ssh-agent中的密码短语,而不是每次提示?