生成新 SSH 密钥并添加到 ssh-agent

检查现有 SSH 密钥后,您可以生成新 SSH 密钥以用于身份验证,然后将其添加到 ssh-agent。

关于 SSH 密钥生成

如果您还没有 SSH 密钥,则必须生成新 SSH 密钥用于身份验证。 如果不确定是否已经拥有 SSH 密钥,您可以检查现有密钥。 更多信息请参阅“检查现有 SSH 密钥”。

如果不想在每次使用 SSH 密钥时重新输入密码,您可以将密钥添加到 SSH 代理,让它管理您的 SSH 密钥并记住您的密码。

生成新 SSH 密钥

  1. 打开 Terminal(终端)Terminal(终端)Git Bash

  2. 粘贴下面的文本(替换为您的 GitHub Enterprise Server 电子邮件地址)。

    $ ssh-keygen -t ed25519 -C "your_email@example.com"

    注:如果您使用的是不支持 Ed25519 算法的旧系统,请使用以下命令:

    $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

This creates a new SSH key, using the provided email as a label.

> Generating public/private algorithm key pair.
  1. 提示您“Enter a file in which to save the key(输入要保存密钥的文件)”时,按 Enter 键。 这将接受默认文件位置。

    > Enter a file in which to save the key (/Users/you/.ssh/id_algorithm): [Press enter]
    > Enter a file in which to save the key (/c/Users/you/.ssh/id_algorithm):[Press enter]
    > Enter a file in which to save the key (/home/you/.ssh/algorithm): [Press enter]
  2. 在提示时输入安全密码。 更多信息请参阅“使用 SSH 密钥密码”。

    > Enter passphrase (empty for no passphrase): [Type a passphrase]
    > Enter same passphrase again: [Type passphrase again]

将 SSH 密钥添加到 ssh-agent

在向 ssh 代理添加新的 SSH 密钥以管理您的密钥之前,您应该检查现有 SSH 密钥并生成新的 SSH 密钥。 将 SSH 密钥添加到该代理时,应使用默认的 macOS ssh-add 命令,而不是使用通过 macports, homebrew 或某些其他外部来源安装的应用程序。

  1. 在后台启动 ssh 代理。

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566

    根据您的环境,您可能需要使用不同的命令。 例如,您可能需要在启动 ssh 代理之前运行 sudo-s-H 来使用根访问,或者您可能需要使用 exec ssh-agent bashexec ssh-agent zsh 来运行 ssh-agent。

  2. 如果您使用的是 macOS Sierra 10.12.2 或更高版本,则需要修改 ~/.ssh/config 文件以自动将密钥加载到 ssh-agent 中并在密钥链中存储密码。

    • 首先,检查您的 ~/.ssh/config 文件是否在默认位置。

      $ open ~/.ssh/config
      > The file /Users/you/.ssh/config does not exist.
    • 如果文件不存在,请创建该文件。

      $ touch ~/.ssh/config
    • 打开您的 ~/.ssh/config 文件,然后修改文件以包含以下行。 如果您的 SSH 密钥文件与示例代码具有不同的名称或路径,请修改文件名或路径以匹配您当前的设置。

      Host *
        AddKeysToAgent yes
        UseKeychain yes
        IdentityFile ~/.ssh/id_ed25519
      

      注意: 如果您选择不向密钥添加密码,应该省略 UseKeychain 行。

      注意:如果您看到如下错误

      /Users/USER/.ssh/config: line 16: Bad configuration option: usekeychain
      

      Host * 部分添加一个额外的配置行:

      Host *
        IgnoreUnknown UseKeychain
      
  3. 将 SSH 私钥添加到 ssh-agent 并将密码存储在密钥链中。 If you created your key with a different name, or if you are adding an existing key that has a different name, replace id_ed25519 in the command with the name of your private key file.

    $ ssh-add -K ~/.ssh/id_ed25519

    Note: The -K option is Apple's standard version of ssh-add, which stores the passphrase in your keychain for you when you add an SSH key to the ssh-agent. 如果选择不向密钥添加密码,请运行命令,而不使用 -K 选项。

    如果您没有安装 Apple 的标准版本,可能会收到错误消息。 有关解决此错误的详细信息,请参阅“错误:ssh-add:非法选项 -- K”。

  4. 将 SSH 密钥添加到 GitHub Enterprise Server 上的帐户。 更多信息请参阅“将新的 SSH 密钥添加到 GitHub 帐户”。

如果已安装 GitHub Desktop,可使用它克隆仓库,而无需处理 SSH 密钥。

  1. 确保 ssh-agent 正在运行。 您可以根据“使用 SSH 密钥密码”中的“自动启动 ssh-agent”说明,或者手动启动它:

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
  2. 将 SSH 私钥添加到 ssh-agent。 If you created your key with a different name, or if you are adding an existing key that has a different name, replace id_ed25519 in the command with the name of your private key file.

    $ ssh-add ~/.ssh/id_ed25519
  3. 将 SSH 密钥添加到 GitHub Enterprise Server 上的帐户。 更多信息请参阅“将新的 SSH 密钥添加到 GitHub 帐户”。

  1. 在后台启动 ssh 代理。

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566

    根据您的环境,您可能需要使用不同的命令。 例如,您可能需要在启动 ssh 代理之前运行 sudo-s-H 来使用根访问,或者您可能需要使用 exec ssh-agent bashexec ssh-agent zsh 来运行 ssh-agent。

  2. 将 SSH 私钥添加到 ssh-agent。 If you created your key with a different name, or if you are adding an existing key that has a different name, replace id_ed25519 in the command with the name of your private key file.

    $ ssh-add ~/.ssh/id_ed25519
  3. 将 SSH 密钥添加到 GitHub Enterprise Server 上的帐户。 更多信息请参阅“将新的 SSH 密钥添加到 GitHub 帐户”。

延伸阅读

此文档对您有帮助吗?

隐私政策

帮助我们创建出色的文档!

所有 GitHub 文档都是开源的。看到错误或不清楚的内容了吗?提交拉取请求。

做出贡献

或, 了解如何参与。