【问题标题】:Macintosh Git SSH key setupMacintosh Git SSH 密钥设置
【发布时间】:2016-10-18 02:27:13
【问题描述】:

我使用 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 的情况下工作。我会请他们中的一个来试试看。

如果您对如何操作有其他想法,我将不胜感激。

【问题讨论】:

  • 根本不是一个通用的答案,但我通过使用ssh-agent 插件和oh-my-zsh 已经“解决”了这个问题。您可能会考虑为默认的 os x shell 修改他们的脚本:raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/plugins/…
  • 谢谢,我必须得到其中一个系统并尝试一下。不知何故,我认为他们正在运行 BASH,我认为我们可以对其进行调整。
  • 不,您可能是对的,他们可能正在运行 bash。并不是暗示默认的 os x shell 是zsh。不是!
  • 您是说这个问题发生在几周前发布的 macOS Sierra (10.12) 上吗?

标签: git macos github ssh-agent


【解决方案1】:

解决方案 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,使用最新版本 (>=7.2) 的 openssh,可以在 ~/.ssh/config 中使用以下配置来执行上述操作:

Host *
 AddKeysToAgent yes

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

【讨论】:

  • 请解释一下。每次更改的效果是什么? mac 用户是否应该手动启动 ssh-agent?可以在这里像新手一样对待我,因为我是。
猜你喜欢
  • 1970-01-01
  • 2012-08-15
  • 2015-09-23
  • 2020-03-01
  • 1970-01-01
  • 2020-05-19
  • 2019-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多