一旦你使用以下命令启动了SSH代理:
eval $(ssh-agent)
请选择以下一种方式:
将您的私钥添加到其中:
ssh-add
这将只要求您输入一次密钥短语,然后如果您已经将公共密钥上传到Github,就可以允许您进行推送。
要在macOS上永久添加和保存您的密钥:
ssh-add -K
通过将它存储在用户的钥匙串中,这将使其在你关闭并重新打开后仍然存在。
如果您看到有关deprecated
标志的警告,请尝试新的变体:
ssh-add --apple-use-keychain
在Ubuntu(或等效系统)上永久添加和保存密钥:
ssh-add ~/.ssh/id_rsa
ssh-add -K
命令会将其持久化,通过将其存储在用户的钥匙串中,在您关闭并重新打开它后仍然有效。 - Kirkssh-add -K
命令会返回以下内容:
未知选项 -- K 用法:ssh-add [选项] [文件...] 选项: -l 列出所有密钥的指纹。 -L 列出所有密钥的公共参数。 -k 仅加载密钥而非证书。 -c 要求确认才能使用身份验证。 -t life 添加身份验证时设置生存时间(以秒为单位)。 -d 删除身份验证。 -D 删除所有身份验证。 -x 锁定代理。 -X 解锁代理。 -s pkcs11 从 PKCS#11 提供程序添加密钥。
- Sandeep C-K
是苹果电脑特有的。请参考 https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#adding-your-ssh-key-to-the-ssh-agent。 - bkdir自从我从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
但是在终端重启后仍然无法工作... 谢谢。 - nawlbergs~/.ssh/config
文件中进行了配置,但是却没有起作用。只有在添加了这个答案中的几行代码后才成功。可能是因为 Host *.github.com
对于 github.com
并不起作用。 - olessiassh-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
文件中即可。 - Ardaid_rsa
。如果你有自定义的名称,你应该使用例如 /usr/bin/ssh-add ~/.ssh/custom_filename
。 - Juha Untinen在Windows上对我有效的是(我首先从存储库克隆了代码):
eval $(ssh-agent)
ssh-add
git pull
此时,它最后一次要求我输入密码短语。
ssh-add /c/Users/you_user/.ssh/id_rsa_abcxyz
。 - Alejandro B.尝试将以下内容添加到你的~/.ssh/config文件中:
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
假设您的私钥名称为id_rsa
Host *
。 - IgorGanapolsky以前使用-K标志添加密钥,但现在:
ssh-add --apple-use-keychain
-K 和 -A 标志已经被弃用,分别被 --apple-use-keychain 和 --apple-load-keychain 标志所取代。
LATER EDIT: 你可能需要将 ssh-add --apple-load-keychain -q
添加到你的 .bash_profile
或 .bashrc
或 .zshrc
或等效文件中。
ssh-add --apple-load-keychain -q
添加到我的 .bash_profile
中(如果您使用 zsh,则添加到 .zshrc
)。 - André Willik Valenti.zshrc
文件中。 - alexventuraio运行以下内容:
eval $(ssh-agent) && ssh-add ~/.ssh/id_rsa &>/dev/null
输入密码短语,然后检查 Git。在执行此命令后,Git 不应再要求密码短语。
原始来源:https://gist.github.com/egoens/c3aa494fc246bb4828e517407d56718d
如果您没有使用GitBash并且正在Windows上 - 您需要使用此命令启动ssh-agent
start-ssh-agent.cmd
如果您的ssh代理未设置,则可以以管理员身份打开PowerShell并将其设置为手动模式。Get-Service -Name ssh-agent | Set-Service -StartupType Manual
如果上述解决方案对我无效,一个需要检查的事项是您是否确实拥有公钥(通常为id_rsa.pub
)。虽然这种情况不太常见,但这是我的问题原因。
要从您的私钥创建公钥,请执行以下操作:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub