我按照github教程中的指示创建了密钥,在github上注册了它们,并尝试显式地使用ssh-agent -然而,每当我尝试进行拉或推操作时,git仍然会继续询问我的密码。

原因可能是什么?


当前回答

如果你用的是Win10:

我也有同样的问题。 (以前由于不同的问题,必须从这里用脚本单独更新ssh-agent)

Git确实访问了我的ssh配置(当我在ssh配置中有无意义的行时,Git会抛出异常),但似乎从不关心我通过ssh-agent添加并在配置中引用的私钥。

解决问题的方法是在PowerShell中执行以下命令:

git config core.sshCommand (get-command ssh).Source.Replace('\','/')

(详情见此连结)

其他回答

我也有类似的问题,但其他答案并没有解决我的问题。我想我应该继续发布这篇文章,以防有人像我一样有一个奇怪的设置。

结果发现我有多个密钥,而Git首先使用了错误的密钥。它会提示我输入密码,然后我输入它,然后Git会使用另一个可以工作的密钥(我不需要在这个密钥上输入密码)。

我刚刚删除了它用来提示我输入密码的密钥,现在它工作了!

我会尝试以下方法:

开始GitBash 编辑~/。bashrc文件( 将以下行添加到文件中

SSH_ENV=$HOME/.ssh/environment # start the ssh-agent function start_agent { echo "Initializing new SSH agent..." # spawn ssh-agent /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV} echo succeeded chmod 600 ${SSH_ENV} . ${SSH_ENV} > /dev/null /usr/bin/ssh-add } if [ -f "${SSH_ENV}" ]; then . ${SSH_ENV} > /dev/null ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { start_agent; } else start_agent; fi Save and close the file Close GitBash Reopen GitBash Enter your passphrase

如果你碰巧用的是鱼,这里有一个要点:

# config.fish
if not pgrep -f ssh-agent > /dev/null
  eval (ssh-agent -c)
  set -Ux SSH_AUTH_SOCK $SSH_AUTH_SOCK
  set -Ux SSH_AGENT_PID $SSH_AGENT_PID
  set -Ux SSH_AUTH_SOCK $SSH_AUTH_SOCK
end

上面没有提到的另一个可能的解决方案是使用以下命令检查您的遥控器:

git remote -v

如果远程服务器不是以git启动,而是以https启动,您可能希望按照下面的示例将其更改为git。

git remote -v // origin is https://github.com/user/myrepo.git
git remote set-url origin git@github.com:user/myrepo.git
git remote -v // check if remote is changed

如果你用的是Win10:

我也有同样的问题。 (以前由于不同的问题,必须从这里用脚本单独更新ssh-agent)

Git确实访问了我的ssh配置(当我在ssh配置中有无意义的行时,Git会抛出异常),但似乎从不关心我通过ssh-agent添加并在配置中引用的私钥。

解决问题的方法是在PowerShell中执行以下命令:

git config core.sshCommand (get-command ssh).Source.Replace('\','/')

(详情见此连结)