Git for Windows - 每次 push 都要求输入 SSH 密码

5

今天我在Windows上安装了Git,做了一些测试后发现在每次push时都会要求输入passphrase(这在Linux上不会出现)。

我在另一个帖子中提出了一些建议,我看到我没有配置ssh-agent,但我已经配置了它,问题仍然存在。

image

有什么建议吗?谢谢!


你能详细说明一下你是如何配置ssh-agent的吗? - iBug
@iBug ssh-agent是Windows中的可选组件。在Windows 11中,您可以通过“设置”->“应用”->“可选功能”设置来安装它(尽管可能已默认安装)。然后打开服务,确保OpenSSH身份验证代理正在运行并将自动启动。只要您使用MS提供的SSH满足您的SSH需求,该代理将起作用。一旦您将密钥添加到其中,它将自动为您锁定/解锁!就像在Linux或MacOS中一样。 - undefined
2个回答

4

我曾经遇到过同样的问题,浪费了几个小时试图弄清楚为什么Windows一直要求我输入ssh密码。最后,这篇文章给了我帮助:https://www.teapotcoder.com/post/how-to-fix-git-ssh-asking-for-password-on-windows-10/

打开PowerShell并输入命令

Get-Command ssh

如果输出列出了不在您的git usr / bin目录中的可执行文件,则执行以下操作:
git config core.sshCommand (get-command ssh).Source.Replace('\','/')

或者,如果您想在当前的PowerShell会话中测试此功能而不影响Git配置

$ENV:GIT_SSH_COMMAND = (get-command ssh).Source.Replace('\','/')

这为什么有效?

当你安装git时,它会附带ssh。但如果你有较新版本的Windows 10,则Windows会自带一个安装了SSH的版本。安装在C:\ Windows \ System32 \ OpenSSH中。然后将其放入环境PATH中,因此可以进行测试:

ssh -T git@github.com

使用通过ssh-add添加的密钥,使用Windows提供的二进制文件。但是git正在使用git usr/bin文件夹中的ssh工具。这是不同的密钥集合。因此,每次进行git pull操作时都会提示输入您的密码。


所以基本上你告诉 Git 使用 Windows 的 ssh.exe - Tom
这绝对是Windows 11的正确解决方案。你不需要像其他解决方案建议的那样去配置第二个ssh-agent,因为OpenSSH代理是Windows 10和11下的一个Windows服务,所以你只需要配置git使用Windows版本的ssh即可。非常感谢,之前为此问题烦恼了很久。 - undefined

0

请尝试以下

使用 Git Bash 而不是 PowerShell 将您的密钥文件复制到 ~/.ssh 将以下代码粘贴到您的 ~/.profile 或 ~/.bashrc 中 重新启动 Git Bash
``` env=~/.ssh/agent.env agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
agent_start () { (umask 077; ssh-agent >| "$env") . "$env" >| /dev/null ; }
agent_load_env
# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)
if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then agent_start ssh-add elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then ssh-add fi unset env ```

启动 Git Bash 时,会提示输入密钥或密码,然后无缝工作。脚本还将启动 SSH 代理并使用 ssh-add 添加密钥文件。


是的,不要这样做。@alexS在这里给出了正确的解决方案。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接