Git总是问我的SSH密钥密码
我正在使用Linux,并按照github教程中的说明创build了密钥,使用github注册了这些密钥,并明确尝试了使用ssh-agent,但是每次我尝试执行pull或push时,git都会继续询问我的密码。
可能是什么原因?
一旦你启动了SSH代理:
eval $(ssh-agent)
-
你必须添加你的私钥:
ssh-add
这会问你一次你的密码,然后你应该被允许推,只要你上传公钥给Github。
-
永久保存密钥:
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
我会试试这个 。 他们说的是:
- 启动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
- 保存并closures文件
- closuresGitBash
- 重新打开GitBash
- 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接缝运作良好:
这个想法是:
-
你创build
~/.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
-
重新运行Bash