Answers:
使用以下命令启动SSH代理后:
eval $(ssh-agent)
您必须在其中添加私钥:
ssh-add
这将只询问您一次密码短语,然后,只要您将公钥上传到Github,就应该允许您输入密码。
要在macOS上永久保存密钥:
ssh-add -K
在关闭并通过将其存储在用户的钥匙串中重新打开后,它将保留它。
git pull
,再次提示我输入密码。
ssh-add -K
将在您关闭后将其保留并通过将其存储在用户的钥匙串中将其重新打开。
ssh-add -K
提供以下信息:unknown option -- K usage: ssh-add [options] [file ...] Options: -l List fingerprints of all identities. -L List public key parameters of all identities. -k Load only keys and not certificates. -c Require confirmation to sign using identities -t life Set lifetime (in seconds) when adding identities. -d Delete identity. -D Delete all identities. -x Lock agent. -X Unlock agent. -s pkcs11 Add keys from PKCS#11 provider.
-K
是苹果特有的。参见help.github.com/articles/…–
从OS X El Capitan(10.11)升级到macOS Sierra(10.12)之后,重新启动后这一直发生在我身上。该ssh-add
解决方案暂时有效,但不会在另一次重新启动后持续存在。
永久的解决方案是编辑(或创建)~/.ssh/config
并启用该UseKeychain
选项。
Host *
UseKeychain yes
ssh-add -K /Users/***/.ssh/git/id_rsa
但是在终端重启后它仍然无法正常工作...谢谢。
如果您尝试过ssh-add
,仍然提示输入密码,请尝试使用ssh-add -K
。这会将您的密码短语添加到钥匙串中。
更新:如果您使用的是macOS Sierra,则可能需要执行另一步骤,因为上述操作可能不再起作用。将以下内容添加到您的~/.ssh/config
:
Host *
UseKeychain yes
我会尝试以下方法:
~/.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
zsh
。只需将其添加到.zshrc
id_rsa
。如果您有一个自定义名称,则应使用例如。/usr/bin/ssh-add ~/.ssh/custom_filename
在Windows上对我有用的是(我从仓库1st克隆了代码):
eval $(ssh-agent)
ssh-add
git pull
当时它最后一次要求我输入密码
鸣谢:解决方案取自 /unix/12195/how-to-a-avoid-being-asked-passphrase-each-time-i-push-to-bitbucket
尝试将其添加到〜/ .ssh / config中:
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
...假设您的私钥名为id_rsa
我尝试其他解决方案,但没有帮助。但是,从Bitbucket.com接缝处的此步骤(我的GitBash SSH环境始终要求输入密码短语,我该怎么办?)工作良好:
这个想法是:
您创建~/.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