首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Macintosh Git SSH密钥设置

Macintosh Git SSH密钥设置
EN

Stack Overflow用户
提问于 2016-10-17 16:59:53
回答 1查看 4.2K关注 0票数 4

我使用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远程交互时,有必要运行这两行终端:

代码语言:javascript
复制
$ 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代理的情况下,这个东西可能会工作。我会让他们中的一个试着看。

如果你对该做什么有其他想法,我会感激你的想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-17 18:27:13

解决方案1:在启动时自动将密钥从keychaing到ssh-agent

尝试创建以下LaunchAgent以自动加载所有键。例如,在~/Library/LaunchAgents/auto-load-key.plist中转储以下内容

代码语言:javascript
复制
<?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中的以下配置来执行上述操作:

代码语言:javascript
复制
Host *
 AddKeysToAgent yes

This也值得一读,因为公认的答案提到AddKeyToAgent选项会导致较旧的OSX行为(i.e. passphrase stored until logout or restart)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40091879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档