GitLab SSH Key 配置指南
使用 SSH 密钥可以安全地连接到 GitLab,而无需每次都输入用户名和密码。本指南将详细介绍如何生成 SSH 密钥、将其添加到 SSH 代理、上传到 GitLab 以及测试连接。
1. 检查现有 SSH 密钥
在生成新密钥之前,请检查您的系统上是否已存在 SSH 密钥对。打开您的终端或 Git Bash(在 Windows 上)并运行以下命令:
bash
ls -al ~/.ssh
如果您看到类似 id_rsa.pub、id_ed25519.pub 或以 .pub 结尾的文件,则表示您可能已经有现有密钥。如果您想使用现有密钥,可以跳到第 3 步。否则,请继续生成新密钥。
2. 生成新的 SSH 密钥对
如果您没有现有密钥或希望创建一个新密钥,请使用 ssh-keygen 命令。为了更好的安全性,建议使用 ed25519,但 RSA 也是一个选项。
对于 ED25519(推荐):
bash
ssh-keygen -t ed25519 -C "[email protected]"
对于 RSA:
bash
ssh-keygen -t rsa -b 4096 -C "[email protected]"
请将 "[email protected]" 替换为您实际的电子邮件地址。
当系统提示时:
- “Enter file in which to save the key (…):” 按 Enter 键接受默认文件路径(例如
~/.ssh/id_ed25519或~/.ssh/id_rsa)。 - “Enter passphrase (empty for no passphrase):” 强烈建议您输入一个强密码以增加安全性。每次使用密钥时都需要输入此密码。如果您不需要密码,只需按 Enter 两次。
此过程将生成两个文件:一个私钥(例如 id_ed25519)和一个公钥(例如 id_ed25519.pub)。请务必妥善保管您的私钥,切勿共享。
3. 将您的 SSH 密钥添加到 SSH 代理
SSH 代理管理您的 SSH 密钥并将其保存在内存中,这样您就不必每次使用密钥时都输入密码。
-
启动 SSH 代理:
bash
eval "$(ssh-agent -s)"
在某些系统上,尤其是 macOS,您可能需要配置~/.ssh/config以自动将密钥添加到代理并将密码存储在钥匙串中。 -
将您的私钥添加到 SSH 代理:
bash
ssh-add ~/.ssh/id_ed25519
如果您生成的是 RSA 密钥或以不同名称命名密钥,请将id_ed25519替换为正确的私钥文件名(例如id_rsa)。
如果您设置了密码,系统将提示您现在输入密码。
4. 将公共 SSH 密钥添加到 GitLab
现在您需要将您的公钥添加到您的 GitLab 帐户。
-
将您的公钥复制到剪贴板。
- Linux:
bash
cat ~/.ssh/id_ed25519.pub | xclip -selection clipboard
(您可能需要先安装xclip:sudo apt-get install xclip) - macOS:
bash
cat ~/.ssh/id_ed25519.pub | pbcopy - Windows (Git Bash):
bash
cat ~/.ssh/id_ed25519.pub | clip
或者,您可以使用文本编辑器打开.pub文件并复制其全部内容。
- Linux:
-
登录 GitLab:
- 访问您的 GitLab 实例(例如
gitlab.com)。 - 在右上角,选择您的头像,然后选择 Edit profile 或 Preferences。
- 在左侧边栏中,选择 SSH Keys。
- 选择 Add new key。
- 在 Key 框中,粘贴您的公钥的全部内容。
- 为您的密钥添加一个描述性 Title(例如“我的工作笔记本电脑”)。
- (可选)设置密钥的 Expiration date。
- 点击 Add key。
- 访问您的 GitLab 实例(例如
5. 测试您的 SSH 连接
要验证您的 SSH 密钥是否已正确配置到 GitLab,请打开您的终端或 Git Bash 并运行:
bash
ssh -T [email protected]
- 如果您连接的是自管型 GitLab 实例,请将
gitlab.com替换为您的实例的 URL(例如ssh -T [email protected])。 - 首次连接时,您可能会看到有关主机真实性的警告。输入
yes并按 Enter 键以继续连接并将 GitLab 添加到您的已知主机列表中。 - 如果成功,您应该会看到“Welcome to GitLab, @yourusername!”的消息。
现在,您可以使用 SSH 克隆 GitLab 存储库,而无需输入您的用户名和密码。例如:
bash
git clone [email protected]:groupname/reponame.git