繁体   English   中英

Macintosh Git SSH密钥设置

[英]Macintosh Git SSH key setup

我使用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的情况下工作。 我会问其中一个人试试并看看。

如果您对如何做有其他想法,我会很感激。

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

尝试创建以下LaunchAgent以自动加载所有键。 例如,在~/Library/LaunchAgents/auto-load-key.plist转储以下~/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配置选项

另请注意,基于 ,使用openssh的最新版本(> = 7.2),可以在〜/ .ssh / config中使用以下配置来执行上述等效操作:

Host *
 AddKeysToAgent yes

也值得一读,因为接受的答案提到AddKeyToAgent选项导致较旧的OSX行为( ie passphrase stored until logout or restart

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM