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

原因可能是什么?


当前回答

如果你没有使用GitBash并且在Windows上-你需要使用这个命令启动你的ssh-agent

start-ssh-agent.cmd

如果您的ssh代理没有设置,您可以以管理员身份打开PowerShell并将其设置为手动模式

Get-Service -Name ssh-agent | Set-Service -StartupType Manual

其他回答

对于Windows或Linux用户,GitHub Docs中描述了一个可能的解决方案,为了方便起见,我在下面报告。

您可以在打开bash或Git shell时自动运行ssh-agent。复制以下行并将它们粘贴到~/。Profile或~/。bashrc文件:(

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

如果您的私钥没有存储在默认位置之一(如~/. SSH /id_rsa),您需要告诉SSH身份验证代理在哪里可以找到它。要将密钥添加到ssh-agent,输入ssh-add ~/path/ To /my_key。

现在,当您第一次运行Git Bash时,系统会提示您输入密码。ssh-agent进程将继续运行,直到您注销、关闭计算机或杀死该进程为止。

如果你用的是Win10:

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

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

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

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

(详情见此连结)

如果你没有使用GitBash并且在Windows上-你需要使用这个命令启动你的ssh-agent

start-ssh-agent.cmd

如果您的ssh代理没有设置,您可以以管理员身份打开PowerShell并将其设置为手动模式

Get-Service -Name ssh-agent | Set-Service -StartupType Manual

如果您已经尝试了ssh-add,并且仍然提示您输入密码,那么请尝试使用ssh-add -K。这将您的密码短语添加到您的钥匙串。

更新:如果你使用的是macOS Sierra,那么你可能需要再做一步,因为上面的步骤可能不再有效。在~/.ssh/config中添加以下命令:

Host *
  UseKeychain yes

以前-K标志用于添加键,但现在:

ssh-add --apple-use-keychain

-K和-A标志已弃用,已被替换 用苹果使用钥匙链和苹果装载钥匙链 分别标记。


稍后编辑:您可能需要添加ssh-add——apple-load-keychain -q到您的.bash_profile或.bashrc或.zshrc或等效文件。