关于向帐户添加 SSH 密钥
可以使用 SSH(安全外壳协议)在 GitHub 上的存储库中访问和写入数据。 通过 SSH 进行连接时,使用本地计算机上的私钥文件进行身份验证。有关详细信息,请参阅“关于 SSH”。
还可以使用 SSH 对提交和标记进行签名。 有关提交签名的详细信息,请参阅“关于提交签名验证”。
生成 SSH 密钥对后,必须将公钥添加到 GitHub.com,才能为帐户启用 SSH 访问。
先决条件
在向 GitHub.com 上的帐户添加新的 SSH 密钥之前,请完成以下步骤。
- 检查现有 SSH 密钥。 有关详细信息,请参阅“检查现有 SSH 密钥”。
- 生成新的 SSH 密钥,并将其添加到计算机的 SSH 代理。 有关详细信息,请参阅“生成新的 SSH 密钥并将其添加到 ssh-agent”。
向你的帐户添加新的 SSH 密钥
可以添加 SSH 密钥并将其用于身份验证或提交签名,或同时用于这两个目的。 如果要使用相同的 SSH 密钥进行身份验证和签名,则需要将其上传两次。
向 GitHub.com 上的帐户添加新 SSH 身份验证密钥后,可以重新配置任何本地存储库以使用 SSH。 有关详细信息,请参阅“管理远程仓库”。
Note
GitHub 通过在 2022 年 3 月 15 日删除旧的、不安全的密钥类型来提高安全性。
自该日期起,不再支持 DSA 密钥 (ssh-dss
)。 无法在 GitHub 上向个人帐户添加新的 DSA 密钥。
2021 年 11 月 2 日之前带有 valid_after
的 RSA 密钥 (ssh-rsa
) 可以继续使用任何签名算法。 在该日期之后生成的 RSA 密钥必须使用 SHA-2 签名算法。 一些较旧的客户端可能需要升级才能使用 SHA-2 签名。
-
将 SSH 公钥复制到剪贴板。
如果您的 SSH 公钥文件与示例代码不同,请修改文件名以匹配您当前的设置。 在复制密钥时,请勿添加任何新行或空格。
$ pbcopy < ~/.ssh/id_ed25519.pub # Copies the contents of the id_ed25519.pub file to your clipboard
Tip
如果
pbcopy
不起作用,你可以找到隐藏的.ssh
文件夹,在你最喜欢的文本编辑器中打开该文件,并将其复制到剪贴板。
$ clip < ~/.ssh/id_ed25519.pub
# Copies the contents of the id_ed25519.pub file to your clipboard
Note
- 对于适用于 Linux 的 Windows 子系统 (WSL),可以使用
clip.exe
。 如果clip
不起作用,你可以找到隐藏的.ssh
文件夹,在你最喜欢的文本编辑器中打开该文件,并将其复制到剪贴板。 - 在使用 Windows Terminal的较新版本 Windows 中,或者在使用 PowerShell 命令行的任何其他位置,可能会收到一条
ParseError
,表示The '<' operator is reserved for future use.
。在这种情况下,应使用以下替代clip
命令:
$ cat ~/.ssh/id_ed25519.pub | clip
# Copies the contents of the id_ed25519.pub file to your clipboard
$ cat ~/.ssh/id_ed25519.pub
# Then select and copy the contents of the id_ed25519.pub file
# displayed in the terminal to your clipboard
Tip
或者,你也可以找到隐藏的 .ssh
文件夹,在你最喜欢的文本编辑器中打开该文件,并将其复制到剪贴板。
Note
若要详细了解 GitHub CLI,请参阅“关于 GitHub CLI”。
在使用 GitHub CLI 将 SSH 密钥添加到帐户之前,必须向 GitHub CLI 进行身份验证。 有关详细信息,请参阅 GitHub CLI 文档中的“gh auth login
”。
要将 SSH 密钥添加到 GitHub 帐户,请使用 ssh-key add
子命令,指定公钥。 对于身份验证密钥,如果系统提示请求其他作用域,请按照命令行中的说明操作。
gh ssh-key add KEY-FILE --type {authentication|signing}
若要包含新密钥的标题,请使用 -t
或 --title
标记。
gh ssh-key add KEY-FILE --title "personal laptop"
如果按照“生成新的 SSH 密钥并将其添加到 ssh-agent”中的说明生成 SSH 密钥,则可以使用此命令将密钥添加到帐户。
gh ssh-key add ~/.ssh/id_ed25519.pub --type signing