我正在使用Linux,我按照github教程中的指示创建了密钥,用github注册了它们,并尝试明确地使用ssh-agent - 但是每次我尝试执行pull或push时git都会继续询问我的密码 .
可能是什么原因?
听起来您可能遇到SSH-Agent本身的问题 . 我会尝试排除故障 .
1)您是否使用ssh-add将密钥添加到SSH?
2)您是否在使用之间关闭终端窗口,因为如果您关闭窗口,则必须在重新打开时再次输入密码 .
如果上述解决方案对我不起作用,那么要检查的一件事是你实际上也有公钥(通常为 id_rsa.pub ) . 这是不寻常的,但这是我的原因 .
id_rsa.pub
要从私钥创建公钥,请执行以下操作:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
我有类似的问题,但其他答案并没有解决我的问题 . 我以为我会继续发布这个以防万一其他人像我一样有一个棘手的设置 .
事实证明我有多个键,Git首先使用了错误的键 . 它会提示我输入密码,我会输入密码,然后Git会使用一个可以工作的不同密钥(我不需要输入密码) .
我刚刚删除了它用来提示我输入密码的密钥,现在它可以工作了!
使用以下命令启动SSH代理后:
eval $(ssh-agent)
ssh-add
这只会问你一次你的密码,然后你应该被允许推送,只要你把公钥上传到Github .
ssh-add -K
通过将其存储在用户的钥匙串中,关闭并重新打开它后,它将保持不变 .
自从OS X El Capitan(10.11)升级到macOS Sierra(10.12)后重新启动后,这种情况一直在发生 . ssh-add 解决方案暂时有效,但在另一次重启时不会持续存在 .
永久的解决方案是编辑(或创建) ~/.ssh/config 并启用 UseKeychain 选项 .
~/.ssh/config
UseKeychain
Host * UseKeychain yes
相关:macOS keeps asking my ssh passphrase since I updated to Sierra
如果您已尝试 ssh-add 但仍然提示您输入密码,请尝试使用 ssh-add -K . 这会将您的密码添加到您的钥匙串中 .
更新:如果你正在使用macOS Sierra,那么你可能需要再做一步,因为上面的内容可能不再适用 . 将以下内容添加到 ~/.ssh/config :
我会尝试以下方法:
开始GitBash
编辑 ~/.bashrc 文件
~/.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
保存并关闭文件
关闭GitBash
重新打开GitBash
输入您的密码
尝试将此添加到 ~/.ssh/config :
Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa
...假设您的私钥名为 id_rsa
在Windows上对我有用的是(我从repo 1st克隆了代码):
eval $(ssh-agent) ssh-add git pull
那时它最后一次问我的密码短语
致谢:解决方案取自https://unix.stackexchange.com/questions/12195/how-to-avoid-being-asked-passphrase-each-time-i-push-to-bitbucket
我尝试了不同的解决方案,但没有任但是Bitbucket.com接缝的这一步骤(My GitBash SSH environment always asks for my passphrase, what can I do?)效果很好:
这个想法是:
你创建了 ~/.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
为了避免在生成和配置ssh密钥后git要求输入密码,请不要使用https,而是使用:
git@bitbucket.org:<repo_owner>/<reponame>.git
要么
ssh://git@bitbucket.org/<repo_owner>/<reponame>.git
11 回答
听起来您可能遇到SSH-Agent本身的问题 . 我会尝试排除故障 .
1)您是否使用ssh-add将密钥添加到SSH?
2)您是否在使用之间关闭终端窗口,因为如果您关闭窗口,则必须在重新打开时再次输入密码 .
如果上述解决方案对我不起作用,那么要检查的一件事是你实际上也有公钥(通常为
id_rsa.pub
) . 这是不寻常的,但这是我的原因 .要从私钥创建公钥,请执行以下操作:
我有类似的问题,但其他答案并没有解决我的问题 . 我以为我会继续发布这个以防万一其他人像我一样有一个棘手的设置 .
事实证明我有多个键,Git首先使用了错误的键 . 它会提示我输入密码,我会输入密码,然后Git会使用一个可以工作的不同密钥(我不需要输入密码) .
我刚刚删除了它用来提示我输入密码的密钥,现在它可以工作了!
使用以下命令启动SSH代理后:
这只会问你一次你的密码,然后你应该被允许推送,只要你把公钥上传到Github .
通过将其存储在用户的钥匙串中,关闭并重新打开它后,它将保持不变 .
自从OS X El Capitan(10.11)升级到macOS Sierra(10.12)后重新启动后,这种情况一直在发生 .
ssh-add
解决方案暂时有效,但在另一次重启时不会持续存在 .永久的解决方案是编辑(或创建)
~/.ssh/config
并启用UseKeychain
选项 .相关:macOS keeps asking my ssh passphrase since I updated to Sierra
如果您已尝试
ssh-add
但仍然提示您输入密码,请尝试使用ssh-add -K
. 这会将您的密码添加到您的钥匙串中 .更新:如果你正在使用macOS Sierra,那么你可能需要再做一步,因为上面的内容可能不再适用 . 将以下内容添加到
~/.ssh/config
:我会尝试以下方法:
开始GitBash
编辑
~/.bashrc
文件将以下行添加到文件中
保存并关闭文件
关闭GitBash
重新打开GitBash
输入您的密码
尝试将此添加到 ~/.ssh/config :
Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa
...假设您的私钥名为 id_rsa
在Windows上对我有用的是(我从repo 1st克隆了代码):
那时它最后一次问我的密码短语
致谢:解决方案取自https://unix.stackexchange.com/questions/12195/how-to-avoid-being-asked-passphrase-each-time-i-push-to-bitbucket
我尝试了不同的解决方案,但没有任但是Bitbucket.com接缝的这一步骤(My GitBash SSH environment always asks for my passphrase, what can I do?)效果很好:
这个想法是:
你创建了
~/.bashrc
文件添加以下脚本:
为了避免在生成和配置ssh密钥后git要求输入密码,请不要使用https,而是使用:
要么