我使用Linux,我帮助一些有Macintosh的学生。我可以通过命令行部分指导他们,但在某些Mac设置上我无能为力。
在Macintosh上,我们按照https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent的说明操作。我们能够生成SSH密钥,上传公共部分,然后我们就可以与GitHub进行交互。我们可以在Gitlab服务器或BitBucket中完成相同的工作。
这是我不明白的部分。在较新的Mac OS中,用户帐户在每个会话中没有启动ssh-agent,并且不会记住用户密钥。据我所知,当用户想要使用ssh协议与GitHub或其他一些Git远程交互时,有必要在终端上运行这两行:
$ eval "$(ssh-agent -s)"
$ ssh-add -K ~/.ssh/id_rsa
这很乏味,但据我所知,它是Mac世界的状态。 https://github.com/lionheart/openradar-mirror/issues/15361。这有点不方便。即使我们将它们放在shell脚本中,也不是很棒。
我想把它放在shell配置中,不知道怎么做。
Linux系统总是为我们启动ssh-agent,我们从未注意到这种不便,我收集。
我已经问了几位高级Mac用户,他们说他们没有看到这个问题,Git和SSH密钥才能正常工作。我试图找出他们的系统有什么不同。到目前为止,我最好的猜测是他们创建了没有任何密码短语的密钥,在这种情况下,这个东西可能在没有ssh-agent的情况下工作。我会请其中一个人尝试一下,看看。
如果您对如何做有其他想法,我会很感激。
答案 0 :(得分:1)
尝试创建以下LaunchAgent以自动加载所有密钥。例如,在~/Library/LaunchAgents/auto-load-key.plist
中转储以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>ssh-add-a</string>
<key>ProgramArguments</key>
<array>
<string>ssh-add</string>
<string>-A</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
另请注意,基于this,使用openssh的最新版本(> = 7.2),可以在〜/ .ssh / config中使用以下配置来执行上述等效操作:< / p>
Host *
AddKeysToAgent yes
This也值得一读,因为接受的答案提到AddKeyToAgent
选项会导致较旧的OSX行为(i.e. passphrase stored until logout or restart
)