SSH 密钥#

SSH 密钥是 Git 的主要身份验证机制,并且是创建 GitLab 中的新项目、fork GitLab 中的现有项目以及将更改推送到托管在 GNOME 基础设施上的项目所必需的。 GitLab 的文档包含有关 如何生成和上传 SSH 密钥 的说明。 请注意,SSH 端点位于 ssh.gitlab.gnome.org,而不是 gitlab.gnome.org

SSH 密钥指南#

为了保持 GNOME 代码库的安全,所有 GNOME 贡献者如何处理他们的 SSH 密钥非常重要。 以下是指导方针列表。

  • 生成长度合理的密钥。 密码学每天都在取得进展,无论是新的技术还是强大的机器,而保持更安全的唯一方法是让想要破解您安全的人付出更多努力。 不要生成短于 2048 位的密钥,并考虑使用更长的密钥。

  • 始终使用强大的密码短语。 如果您的 SSH 密钥不需要密码短语即可解锁,那么任何获得您主目录内容访问权限的人也将获得对 gnome.org 的访问权限。 同样,如果您的密码不强,则很容易被破解。 尝试确保它由数字、大写和小写字母和符号组成,并且长度合理。

  • 每次输入 SSH 密钥可能会很烦人,可以使用 ssh-add 解决。 如果您运行它,您只需要在会话中输入一次密码短语。 大多数当前的 Linux 发行版会自动在您的会话下运行 ssh-agent。

  • 注意不要泄露密钥的私有部分(例如 ~/.ssh/id_rsa),并确保除了您自己以外的任何人都不读取和/或复制它。 如果发生这种情况,您的密钥很可能会被泄露,您应尽快更换它。

  • 不要从不安全的机器上使用 SSH。 如果一台机器正在运行面向公众的服务器,则它不安全。 如果一台机器位于公共实验室中,则它不安全。 如果一台机器由您不信任或不负责任的人使用,它可能不安全。 如果一台机器由您不信任或不负责任的人管理,它绝对不安全。

  • 通常,如果可能,您应该仅从笔记本电脑或仅由您使用的个人工作站使用您的 SSH 密钥。 在某些情况下,与同事或家人共享机器可能会被接受,但需要采取额外的预防措施。 如果您唯一可以访问的机器不符合这些要求,我们目前无法允许您直接访问 git 和 gnome.org 上的登录帐户。

  • 注意物理安全。 如果您在完成 ssh-add 后离开计算机,最好运行 ssh-add -D,但至少确保您已锁定屏幕。 对挂起笔记本电脑后完成 ssh-add 的操作也一样(如果有人偷走您的笔记本电脑,他们不应该能够打开它并 ssh 到 gnome.org)。

SSH 密钥示例#

生成新 SSH 密钥的示例

$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key
(/home/user/.ssh/id_rsa): <hit return>
Enter passphrase (empty for no passphrase): <enter passphrase>
Enter same passphrase again: <enter passphrase again>
Your identification has been saved in
/home/<user>/.ssh/id_rsa.
Your public key has been saved in
/home/<user>/.ssh/id_rsa.pub.
The key fingerprint is:
46:cb:4b:24:91:2a:3a:34:32:11:1d:85:12:7f:58:ab <user>@example.com

选项 -t rsa 选择版本 2 RSA 密钥。 由于只能与不安全的版本 1 SSH 协议一起使用,因此不能在 gnome.org 上使用版本 1 RSA 密钥。

选项 -b 2048 会生成一个 2048 位长的密钥。 请勿使用短于此的密钥,并考虑生成更长的密钥。

您还可以使用 ssh-keygen -p 向没有密码短语的现有密钥添加密码短语。 但是,只有在刚生成密钥后,或者您绝对确定该密钥在此之前一直是完全安全的,才这样做。 如果您不能完全确定,您的密钥可能在此期间已被泄露,在这种情况下,设置密码短语将无济于事,应立即更换它。