我使用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中,用户帐户没有在每个会话中启动ssh代理,用户密钥也不会被记住。据我所知,当用户希望使用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代理的情况下,这个东西可能会工作。我会让他们中的一个试着看。
如果你对该做什么有其他想法,我会感激你的想法。
发布于 2016-10-17 18:27:13
解决方案1:在启动时自动将密钥从keychaing到ssh-agent
尝试创建以下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>解决方案2:(需要最新版本的openssh)使用AddKeysToAgent SSH配置选项
还请注意,基于this,对于最近版本的openssh (>=7.2),可以使用~/..ssh/config中的以下配置来执行上述操作:
Host *
AddKeysToAgent yesThis也值得一读,因为公认的答案提到AddKeyToAgent选项会导致较旧的OSX行为(i.e. passphrase stored until logout or restart)。
https://stackoverflow.com/questions/40091879
复制相似问题