【发布时间】:2022-01-07 19:39:15
【问题描述】:
我在 Windows 10 Pro 机器上尝试执行 git pull 而不必每次都输入我的 SSH 密码。生成了带有密码的密钥对,并且公钥已成功添加到我的 GitLab 帐户中。
在“服务”GUI 中,我可以看到“OpenSSH 身份验证代理”正在运行,如果我在 PowerShell 中执行Get-Service ssh-agent,我会看到以下内容,确认相同的信息:
Status Name DisplayName
------ ---- -----------
Running ssh-agent OpenSSH Authentication Agent
当我执行ssh -T git@gitlab.com 时,我收到“Welcome to 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).
这可能是因为它没有提示输入密码并且需要密码。当我单击“打开 Git 日志”或“显示命令输出”时,我可以看到尝试的命令。在 VSCode 的终端或其他终端类型的应用程序中运行完全相同的命令,系统会提示我输入密码,输入正确的密码后,操作成功。
git remote origin url 是here 描述格式的SSH URL;它不是 HTTPS URL。 second-most-upvoted answer 和 another one further below 在同一个问题上表明,一旦能够在没有密码的情况下执行 ssh 命令,git 命令也可以在没有密码的情况下工作,这不是我在这里观察到的。
我的~./ssh/config 文件条目是:
User git
Hostname gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id_ed25519
AddKeysToAgent yes
如何让 git 使用存储在 ssh-agent 中的密码,而不是每次都提示?
【问题讨论】:
-
虽然链接很有用,但它没有用,原因在下面的答案中注明。
标签: git visual-studio ssh ssh-keys passphrase