如何在 Github 中查看我的 SSH 公钥和私钥?

问题描述 投票:0回答:3

我是 Github 的新人。我已经生成了 SSH 密钥,现在可以在 SSH Keys 中看到它。是公钥还是私钥?

我已将 SSH 密钥(我在SSH 密钥下看到)发送给我的客户。他问是否公开?他想要我的私钥。

是否需要 SSH 私钥?如果是这样,我该如何找回它?

git github ssh-keys
3个回答
5
投票

TL;博士

您无法从 GitHub 帐户 检索私钥,但如果您将密钥文件显式添加到已发布的存储库,则可以。 GitHub 还限制您查看附加到帐户的公钥的指纹;据我所知,您也无法在 GitHub 上查看帐户的公钥。

私钥与公钥

SSH 公钥存储在一行中,并以密钥类型字段开头,例如

ssh-rsa
ecdsa-sha2-nistp256
。私钥有多行和一个标识密钥块的标头。例如:

-----开始 RSA 私钥-----

GitHub 仅接受公钥

无论如何,您实际上无法将有效的私钥添加到 GitHub 帐户。目前,GitHub 仅接受 RSA 和 DSA 公钥用于此目的。如果您尝试添加不同的密钥类型或任何类型的无效公钥,您会收到如下错误:

密钥无效。它必须以“ssh-rsa”或“ssh-dss”开头。检查您是否正在复制密钥的公共部分

私钥未存储在 GitHub 帐户的服务器端

所有这一切的结果是——除了你应该“永远不”将私钥存储在服务器端这一事实之外——“不可能”将私钥附加到 GitHub 帐户。因此,无法从 GitHub 帐户检索密钥对的私有部分。 当然,虽然您无法将 SSH 私钥添加到 GitHub 帐户,但您可以将它们添加到已发布的存储库。作为一个例子,

Vagrant

项目发布了完整的密钥对,但这是一个特例。 发布您的密钥本质上是不安全的。除非您了解其含义,否则请勿这样做。

私钥是...

私人

4
投票

。导出的是public密钥,存储在公共站点(github.com) 除了 https://github.com/<username>.keys 来列出存储在 GitHub 上的 SSH 公钥之外,您还可以使用 GitHub CLI 来使用命令行

gh ssh-key list


gh 2.6.1
起,该命令将标题和 id 列添加到列表输出中,如

#6136(评论)

中所述。 (PR 6270 在 TTY 模式下,显示标题。 在非 TTY 模式下,

id
列会附加在末尾以维持现有列的顺序。


输出示例:

$ gh ssh-key list
TITLE     ID        KEY                                                                               ADDED
Test Key  70929690  ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEuZpG/RQ20C4NxoyhuS4D6+LmSB+ma9eVbeauBaf68l  4d
Test Key  70929824  ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA1dxiSc/vhYD7QRAxTL67BguPioiDRYPtptoSy9NCHd  4d

您注册使用 GitHub 的 SSH 公钥位于:

0
投票
https://github.com/settings/keys

您的 SSH 身份验证公钥位于以下位置的简单列表中:

https://github.com/username.keys

SSH 身份验证公钥也可以在简单的 JSON 数组中找到:

https://api.github.com/users/username/keys

恕我直言,这在某种程度上是一种有问题的安全实践,因为你的身份验证密钥实际上应该只在你和 Github 之间进行。就我自己而言,我已将 ~/.ssh/config 设置为

StrictHostKeyChecking yes

UserKnownHostsFile ~/.ssh/known_hosts_github
以及其他
~/.ssh/config
收紧,以便这些键永远不会在其他地方使用。
GitHub 现在还支持 SSH 签名公钥(GPG 的替代方案),这些密钥以 JSON 数组形式公开提供,网址为:

https://api.github.com/users/username/ssh_signing_keys

通过访问这些 SSH 签名密钥,您可以验证提交、标签,甚至(如果您使用分离的 SSH 签名)代码发布,支持验证 GitHub 存储库来源的工具。 同样,就像我的 SSH 身份验证密钥一样,我在 GitHub 上使用的每台活动计算机都有一个密钥,这些密钥与我的 SSH 身份验证密钥不同(最佳实践和 NIST 建议)。

目前还没有关于如何撤销旧 SSH 签名密钥的最佳实践。

--克里斯托弗·艾伦

© www.soinside.com 2019 - 2024. All rights reserved.