使用 SSH 连接 GitHub

本文记录如何为 Linux 系统配置 SSH 密钥,以便在不输入用户名和密码的情况下连接 GitHub。

参考:通过 SSH 连接到 GitHub - Github 文档

检查现有 SSH 密钥

1
ls -al ~/.ssh

检查输出结果中是否含有 id_rsa.pub / id_ecdsa.pub / id_ed25519.pub 文件。例如

1
2
3
4
5
6
总用量 20
drwx------  2 jay jay 4096 x月  xx xx:xx .
drwxr-xr-x 30 jay jay 4096 x月  xx xx:xx ..
-rw-------  1 jay jay  432 x月  xx xx:xx id_ed25519
-rw-r--r--  1 jay jay  118 x月  xx xx:xx id_ed25519.pub
-rw-r--r--  1 jay jay  444 x月  xx xx:xx known_hosts

说明这个用户已经有一个 SSH 密钥了。

当然,如果没有出现这些文件,或者用户目录下根本没有 .ssh 文件夹,那么说明该用户需要生成新的 SSH 密钥。

生成新的 SSH 密钥

输入以下命令,将 “your_email@example.com” 替换为 GitHub 邮箱地址。

1
ssh-keygen -t ed25519 -C "your_email@example.com"
1
> Generating public/private ALGORITHM key pair.

当系统提示 “Enter a file in which to save the key(输入要保存密钥的文件)” 时,可以按 Enter 键接受默认文件位置。

但如果已经有了已经有了一个密钥文件,则 ssh-keygen 可能会要求重写另一个密钥,在这种情况下,建议创建自定义命名的 SSH 密钥。

1
> Enter a file in which to save the key (/home/YOU/.ssh/id_ALGORITHM):[Press enter]

如果想为 SSH 密钥添加密码,在下列提示出现时设置。

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

将 SSH 密钥添加到 ssh-agent

在后台启动 ssh 代理

1
eval "$(ssh-agent -s)"

如果 ssh-agent 没有启动,输入 exec ssh-agent bash(或 zsh,取决于终端)。

将 SSH 私钥添加到 ssh-agent

1
ssh-add ~/.ssh/id_ed25519

如果使用其他名称创建了密钥,或要添加具有其他名称的现有密钥,请将命令中的 id_ed25519 替换为私钥文件的名称。

添加 SSH 密钥到 GitHub

1
cat ~/.ssh/id_ed25519.pub

将输出的内容复制到剪贴板。

在 GitHub 网页上,点击右上角的头像,选择 Settings -> SSH and GPG keys -> New SSH key。 将复制的 SSH 密钥粘贴到 Key 输入框中,点击 Add SSH key

测试 SSH 连接

1
ssh -T git@github.com

可能会出现以下提示:

1
2
3
> The authenticity of host 'github.com (IP ADDRESS)' can't be established.
> ED25519 key fingerprint is SHA256:....
> Are you sure you want to continue connecting (yes/no)?

验证所看到消息中的指纹是否与 GitHub 的公钥指纹匹配。如果是,则键入 yes:

1
2
> Hi USERNAME! You've successfully authenticated, but GitHub does not
> provide shell access.

之后,就可以在不输入用户名和密码的情况下连接 GitHub 了。

从网站上克隆仓库的时候,记得使用 SSH 地址而不是 HTTPS。

Maxwell Jay at his most tender.
使用 Hugo 构建
主题 StackJimmy 设计