Git总是问我的SSH密钥密码

我正在使用Linux,并按照github教程中的说明创build了密钥,使用github注册了这些密钥,并明确尝试了使用ssh-agent,但是每次我尝试执行pull或push时,git都会继续询问我的密码。

可能是什么原因?

一旦你启动了SSH代理:

eval $(ssh-agent) 
  1. 你必须添加你的私钥:

     ssh-add 

    这会问你一次你的密码,然后你应该被允许推,只要你上传公钥给Github。

  2. 永久保存密钥:

     ssh-add -K 

    在closures并通过将其存储在用户的钥匙串中重新打开之后,它将保留它。

自从从OS X El Capitan(10.11)升级到macOS Sierra(10.12)后,重新启动后发生了这种情况。 ssh-add解决scheme暂时工作,但不会在另一次重新启动时持续。

永久的解决scheme是编辑(或创build) ~/.ssh/config并启用UseKeychain选项。

 Host * UseKeychain yes 

相关: 自从我更新到Sierra之后,macOS一直在问我的ssh密码

如果您已经尝试了ssh-add并且仍然提示您input密码,请尝试使用ssh-add -K 。 这会将您的密码添加到您的钥匙串中。

更新:如果你使用的是macOS Sierra,那么你可能需要做另一个步骤,因为上述可能不再工作。 将以下内容添加到~/.ssh/config

 Host * UseKeychain yes 

我会试试这个 。 他们说的是:

  1. 启动GitBash
  2. 编辑你的~/.bashrc文件
  3. 将以下行添加到文件中

 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 
  1. 保存并closures文件
  2. closuresGitBash
  3. 重新打开GitBash
  4. input您的密码

我有一个类似的问题,但其他答案没有解决我的问题。 我以为我会继续前进,张贴这个以防万一别人有像我这样一个棘手的设置。

事实certificate,我有多个键,Git首先使用了错误的键。 它会提示我input密码,然后input密码,然后Git会使用另一个可以工作的密钥(我不需要input密码)。

我刚刚删除了它用来提示我input密码的密钥,现在可以使用!

尝试添加到你的〜/ .ssh / config

Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa

这听起来像你可能有SSH代理本身的麻烦。 我会尝试解决这个问题。

1)你做了SSH添加到你的密钥到SSH?

2)您是否在两次使用之间closuresterminal窗口,因为如果closures窗口,重新打开密码时将不得不再次input密码。

在Windows上我工作的是(我已经从第一回购克隆的代码):

 eval $(ssh-agent) ssh-add git pull 

那时它最后一次问我口令

积分:解决scheme取自https://unix.stackexchange.com/questions/12195/how-to-avoid-being-asked-passphrase-each-time-i-push-to-bitbucket

如果上面的解决scheme不适合我,有一点要检查的是,你实际上也有公钥(通常是id_rsa.pub )。 这是不寻常的,但这是我的原因。

从您的私钥创build您的公钥:

 ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub 

我尝试不同的解决scheme,但没有帮助 但是这个步骤( 我的GitBash SSH环境总是要求我的密码,我能做什么? )从Bitbucket.com接缝运作良好:

这个想法是:

  1. 你创build~/.bashrc文件

  2. 添加下面的脚本:

     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 
  3. 重新运行Bash