关于 SSH 密钥生成
如果您还没有 SSH 密钥,则必须生成新 SSH 密钥用于身份验证。 如果不确定是否已经拥有 SSH 密钥,您可以检查现有密钥。 更多信息请参阅“检查现有 SSH 密钥”。
如果不想在每次使用 SSH 密钥时重新输入密码,您可以将密钥添加到 SSH 代理,让它管理您的 SSH 密钥并记住您的密码。
生成新 SSH 密钥
-
打开 Terminal(终端)Terminal(终端)Git Bash。
-
粘贴下面的文本(替换为您的 GitHub Enterprise Server 电子邮件地址)。
$ ssh-keygen -t ed25519 -C "your_email@example.com"
注:如果您使用的是不支持 Ed25519 算法的旧系统,请使用以下命令:
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
> Generating public/private ed25519 key pair.
-
提示您“Enter a file in which to save the key(输入要保存密钥的文件)”时,按 Enter 键。 这将接受默认文件位置。
> Enter a file in which to save the key (/Users/you/.ssh/id_ed25519): [Press enter]
> Enter a file in which to save the key (/c/Users/you/.ssh/id_ed25519):[Press enter]
> Enter a file in which to save the key (/home/you/.ssh/id_ed25519): [Press enter]
-
在提示时输入安全密码。 更多信息请参阅“使用 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 或某些其他外部来源安装的应用程序。
-
在后台启动 ssh 代理。
$ eval "$(ssh-agent -s)" > Agent pid 59566
根据您的环境,您可能需要使用不同的命令。 例如,您可能需要在启动 ssh 代理之前运行
sudo-s-H
来使用根访问,或者您可能需要使用exec ssh-agent bash
或exec ssh-agent zsh
来运行 ssh-agent。 -
如果您使用的是 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
-
-
将 SSH 私钥添加到 ssh-agent 并将密码存储在密钥链中。 如果您创建了不同名称的密钥,或者您要添加不同名称的现有密钥,请将命令中的 id_ed25519 替换为您的私钥文件的名称。
$ ssh-add -K ~/.ssh/id_ed25519
注:
-K
选项位于 Apple 的ssh-add
标准版本中,当您将 ssh 密钥添加到 ssh-agent 时,它会将密码存储在您的密钥链中。 如果选择不向密钥添加密码,请运行命令,而不使用-K
选项。如果您没有安装 Apple 的标准版本,可能会收到错误消息。 有关解决此错误的详细信息,请参阅“错误:ssh-add:非法选项 -- K”。
-
将 SSH 密钥添加到 GitHub Enterprise Server 上的帐户。 更多信息请参阅“将新的 SSH 密钥添加到 GitHub 帐户”。
如果已安装 GitHub Desktop,可使用它克隆仓库,而无需处理 SSH 密钥。
-
确保 ssh-agent 正在运行。 您可以根据“使用 SSH 密钥密码”中的“自动启动 ssh-agent”说明,或者手动启动它:
# start the ssh-agent in the background $ eval "$(ssh-agent -s)" > Agent pid 59566
-
将 SSH 私钥添加到 ssh-agent。 如果您创建了不同名称的密钥,或者您要添加不同名称的现有密钥,请将命令中的 id_ed25519 替换为您的私钥文件的名称。
$ ssh-add ~/.ssh/id_ed25519
-
将 SSH 密钥添加到 GitHub Enterprise Server 上的帐户。 更多信息请参阅“将新的 SSH 密钥添加到 GitHub 帐户”。
-
在后台启动 ssh 代理。
$ eval "$(ssh-agent -s)" > Agent pid 59566
根据您的环境,您可能需要使用不同的命令。 例如,您可能需要在启动 ssh 代理之前运行
sudo-s-H
来使用根访问,或者您可能需要使用exec ssh-agent bash
或exec ssh-agent zsh
来运行 ssh-agent。 -
将 SSH 私钥添加到 ssh-agent。 如果您创建了不同名称的密钥,或者您要添加不同名称的现有密钥,请将命令中的 id_ed25519 替换为您的私钥文件的名称。
$ ssh-add ~/.ssh/id_ed25519
-
将 SSH 密钥添加到 GitHub Enterprise Server 上的帐户。 更多信息请参阅“将新的 SSH 密钥添加到 GitHub 帐户”。
延伸阅读
- "关于 SSH"
- "使用 SSH 密钥密码"