Skip to content

GitLab - SSH 密钥设置

GitLab - 设置 SSH 密钥以进行安全访问

Section titled “GitLab - 设置 SSH 密钥以进行安全访问”

SSH(Secure Shell)密钥提供了一种与 GitLab 进行安全身份验证的方式,无需在每次与远程仓库(例如,git push、git pull、git clone)交互时输入用户名和密码。SSH 不使用密码,而是使用一对加密密钥:一个私钥(private key),您将其秘密保存在计算机上;以及一个公钥(public key),您将其上传到 GitLab。

优点包括:

  • 增强安全性:SSH 密钥通常比基于密码的身份验证更安全,因为它们更难猜测或破解。
  • 便利性:无需重复输入您的凭据。
  • 自动化:对于需要与 GitLab 仓库交互的脚本和 CI/CD 流水线至关重要。

在生成新密钥之前,最好检查一下您是否已经拥有密钥。

步骤 1:检查现有 SSH 密钥。打开您的终端(Windows 上是 Git Bash,macOS/Linux 上是 Terminal),然后运行:

$ ls -al ~/.ssh

查找类似 id_rsa.pub、id_ecdsa.pub 或 id_ed25519.pub 的文件。如果您看到 .pub 文件,您很可能已经有了一对 SSH 密钥,可以直接跳到步骤 3,除非您想创建一对新的密钥。

步骤 2:生成新的 SSH 密钥对。我们推荐使用 Ed25519 算法,它既安全又高效。将 your_email@example.com 替换为您与 GitLab 账户关联的实际电子邮件地址。

$ ssh-keygen -t ed25519 -C "your_email@example.com"

当提示 ‘Enter file in which to save the key (~/.ssh/id_ed25519):’ 时,您可以按 Enter 键接受默认位置。这将在您的 ~/.ssh 目录中创建 id_ed25519(私钥)和 id_ed25519.pub(公钥)。

当提示 ‘Enter passphrase (empty for no passphrase):’ 时,您可以输入一个安全的密码短语(passphrase),或者留空。密码短语增加了一层额外的安全性:如果有人获得您的计算机访问权限,他们仍然需要密码短语才能使用您的 SSH 密钥。如果您输入了密码短语,每次使用密钥时都会提示您输入(除非您使用 SSH 代理)。

生成过程的输出示例:

生成公钥/私钥对 ed25519。
Enter file in which to save the key (/home/user/.ssh/id_ed25519): [按 Enter]
Enter passphrase (empty for no passphrase): [输入密码短语或按 Enter]
Enter same passphrase again: [再次输入密码短语或按 Enter]
Your identification has been saved in /home/user/.ssh/id_ed25519
Your public key has been saved in /home/user/.ssh/id_ed25519.pub
密钥指纹是:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com
密钥的 randomart 图像是:
+--[ED25519 256]--+
| .o+=+. |
| *.B o . |
| o.+ O o .|
| . ..B = . |
| S o * |
| . . + E |
| . . o .|
| . |
| |
+----[SHA256]-----+

步骤 3:将您的 SSH 私钥添加到 SSH 代理(可选但推荐)。这样可以避免每次使用密钥时重新输入密码短语。

在后台启动 SSH 代理:

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

将您的 SSH 私钥添加到代理(如果您生成的是 RSA 密钥,请使用 id_rsa):

$ ssh-add ~/.ssh/id_ed25519

步骤 4:将您的 SSH 公钥复制到剪贴板。您需要 .pub 文件的内容。

在 macOS 上:

$ pbcopy < ~/.ssh/id_ed25519.pub

在 Linux 上(需要安装 xclip 或 xsel):

$ cat ~/.ssh/id_ed25519.pub | xclip -selection clipboard # 使用 xclip
# 或
$ cat ~/.ssh/id_ed25519.pub | xsel --clipboard --input # 使用 xsel

在 Windows 上(Git Bash):

$ cat ~/.ssh/id_ed25519.pub | clip

如果这些命令不起作用,您可以在文本编辑器中打开文件 ~/.ssh/id_ed25519.pub(或 id_rsa.pub 等),然后手动复制其全部内容。内容通常以 ssh-ed25519 或 ssh-rsa 开头,并以您的电子邮件地址结尾。

步骤 5:将公钥添加到您的 GitLab 账户。

  1. 登录您的 GitLab 账户。
  2. 在右上角,点击您的头像,然后选择 ‘Edit profile’(编辑个人资料)或 ‘Preferences’(偏好设置)。
  3. 在左侧边栏中,点击 ‘SSH Keys’(SSH 密钥)。
  4. 将您复制的公钥粘贴到 ‘Key’(密钥)文本框中。
  5. ‘Title’(标题)字段通常会自动填充来自 SSH 密钥的注释(例如,您的电子邮件)。如果需要,您可以将其更改为更具描述性的标题(例如,‘我的工作笔记本’)。
  6. 可选地,为密钥设置一个 ‘Expires at’(过期日期)。
  7. 点击 ‘Add key’(添加密钥)按钮。

添加密钥后,您应该会看到它与标题、指纹和创建日期一起列出。

步骤 6:测试您的 SSH 连接到 GitLab 是否正常工作。打开您的终端并运行:

$ ssh -T git@gitlab.com

如果您使用的是自管型 GitLab,请将 gitlab.com 替换为您的 GitLab 实例域名。

首次连接时,您可能会看到类似以下消息:

无法建立主机 'gitlab.com (xxx.xxx.xxx.xxx)' 的真实性。
ECDSA 密钥指纹是 SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw。
您确定要继续连接吗 (yes/no/[指纹])?

输入 yes 并按 Enter。然后您应该会看到一条欢迎消息,例如:

Welcome to GitLab, @username!

如果您看到此消息,说明您的 SSH 密钥已正确设置。如果遇到问题,常见原因包括密钥权限不正确或 SSH 代理未运行或配置不当。请查阅 GitLab 的文档以排除 SSH 相关问题。

有关更多详细信息和故障排除,请参阅 GitLab 关于 SSH 密钥的官方文档:GitLab SSH 文档(注意:这是一个概念性链接,根据要求,如果不是文本,则不添加任何实时链接)。通常,在您偏好的搜索引擎中搜索 ‘GitLab SSH key setup’ 以获取最新的官方指南会很有帮助。