重复的用户名和密码提示令人讨厌且浪费时间。如果您在Gitlab帐户中使用密码验证,每个操作都需要您发送凭据,无论是作为命令的一部分还是通过交互提示。
特别是在自动化GitLab中的CI/CD流水线时,密码验证可能效率低下且存在安全风险。为什么不结束您的痛苦,转而使用Gitlab SSH密钥进行Secure Shell (SSH)验证呢?继续阅读并了解如何做到!
在本教程结束时,您将生成一个SSH密钥对,使用该密钥验证并发布一个新的Gitlab项目。
先决条件
本教程是一个实践演示。要跟着做,请确保准备以下要求。
- 您的GitLab帐户。如果您还没有,请注册一个免费帐户。
- A computer to use as your Gitlab SSH client. This tutorial will be using an Ubuntu 20.04 LTS computer but should work with Windows and macOS too.
- 更新或安装Git。截至本文撰写时的最新版本是2.25.1。
Visual Studio Code(VS Code)。本教程中的示例将使用VS Code 1.62.3版本。
生成Gitlab SSH密钥对
SSH密钥或密钥对由私钥和公钥组成。简而言之,私钥是客户端(您的计算机)提供给服务器(Gitlab)用于身份验证的内容,而公钥是服务器用于解码您的私钥的内容。如果两个密钥匹配,则身份验证通过。
GitLab 支持两种类型的SSH密钥对,即RSA和ED25519 SSH密钥。但在本示例中,您将生成ED25519密钥对,因为它被认为比RSA密钥更安全。请按照以下步骤生成SSH密钥对。
1. 在您的桌面上,打开终端会话并运行下面的命令。该命令将在VS Code中打开您的主目录。
2. 在VS Code上,点击终端 -> 新建终端。

3. 在 VS Code 终端上运行以下ssh-keygen -t
代码以生成ED25519
SSH 密钥类型。评论标签-C
是可选的,但建议使用以使您的密钥更易识别。
4. 在下一个提示中询问要保存密钥的位置时,按 Enter 接受默认文件名。文件名应类似于/home/<username>/.ssh/id_ed25519,其中<username>是您的用户名。

5. 接下来,将密码留空,然后按两次 Enter。结果,您将创建一个无密码的 SSH 密钥对。

您应该看到类似于下面截图所示的结果,显示私钥(id_ed25519)和公钥(id_ed25519.pub)的位置。
私钥和公钥具有相同的基本文件名。但是公钥具有 .pub 扩展名,而私钥没有扩展名。

将 Gitlab SSH 密钥添加到您的个人资料
请记住,私钥留在您的计算机上,而公钥应位于 Gitlab 服务器上。因此,在生成 SSH 密钥后,您的下一步是将公钥上传到您的 Gitlab 帐户。要执行此操作,请按照以下步骤操作。
1. 在 VSCode 中打开您的公钥文件。在资源管理器窗格中展开.ssh文件夹,然后单击id_es25519.pub。接下来,选择公钥并将其复制到剪贴板中。

2. 现在,打开一个网络浏览器,导航至https://gitlab.com,并登录到您的 Gitlab 帐户。
3. 登录后,转到 https://gitlab.com/-/profile/keys 上的 SSH密钥 配置文件设置。
- 将之前复制的公钥粘贴到 密钥 字段中。
- 标题 字段将自动填入公钥的注释部分。将标题值保持不变或输入您首选的值。
- 可选地,在 到期时间 字段指定到期日期。
- 最后,单击 添加密钥。

使用您的Gitlab SSH密钥
到目前为止,您已生成了SSH密钥并将其上传到您的Gitlab帐户。剩下的是通过使用它连接和验证到Gitlab来测试您的SSH密钥是否有效。
登录
在VS Code终端上,通过运行下面的命令连接到您的Gitlab帐户。
假设您是首次连接,则命令会提示您验证主机的真实性并确认连接。在提示处输入yes
并按Enter
确认。
请注意,您无需输入用户名和密码即可登录吗?相反,ssh命令会自动使用您的SSH密钥进行验证。成功登录后,您应该会看到一个欢迎消息,显示“欢迎来到Gitlab @用户名!”。

发布新项目
您已确认您的Gitlab SSH密钥可用,并让您成功验证。但是当您通过Git与Gitlab进行交互时,它是否也起作用呢?为什么不通过发布一个新的Gitlab存储库来进行测试呢?
1. 首先,初始化Git配置并用您的Gitlab账户用户名和电子邮件地址进行设置。在VS Code终端中运行以下git config
命令,分别指定您的Gitlab用户名和电子邮件地址。
您运行的命令应该更新或创建~/.gitconfig文件,并使用您提供的信息。

2. 接下来,在您的主目录下创建一个新的存储库文件夹。将新文件夹命名为my-first-project。
文件夹名称还将成为您的Gitlab存储库项目名称。
3. 运行以下命令初始化存储库。确保将<username>
更改为您的Gitlab用户名。
您应该会看到类似于下方截图的确认消息。

4. 接下来,为您的项目指定远程Git存储库地址。此存储库地址确定您是使用SSH密钥还是使用用户名和密码进行身份验证。
查找下面的语法,其中<username>
是您的Gitlab用户名,<project-name>
是Gitlab存储库名称。请注意,存储库地址以[email protected]
开头,这表示您将使用SSH密钥进行身份验证,而不是使用用户名和密码。
假设 Gitlab 用户名为 kevin
,仓库名称为 my-first-project
。现在在终端中运行以下命令。
5. 运行下面的命令在你的仓库中创建一个空文件,命名为 README.md。
6. 打开 README.md 文件进行编辑,将以下内容粘贴到文件中。编辑完成后保存文件。 My first project to demonstrate Gitlab SSH keys.

7. 告诉 Git 添加新的 README.md 文件到仓库并提交更改。
你应该看到类似下面显示的输出。

8. 最后,是时候将你的新仓库发布了。运行以下命令将仓库从你的计算机推送到你的 Gitlab 账户。
如下所示,项目创建成功,没有出现凭据提示!Git 使用了你的 SSH 密钥进行与 Gitlab 的身份验证。

9. 最后,确认你的新 Gitlab 项目在线存在。使用浏览器导航到 https://gitlab.com/dashboard/projects 查看你现有项目的列表。你应该在列表上看到 my-first-project。

10. 此外,点击项目名称,你应该看到 README.md 文件和内容显示出来。

结论
恭喜你在这个教程中走到了这一步!在这个分步教程中,你已经学会了如何生成和使用SSH密钥来确保对你的GitLab存储库进行安全的版本控制部署。
有了这些知识,你现在可以在Gitlab存储库上执行任务,而不必担心意外暴露你的用户名和密码。
你之前使用过Gitlab SSH密钥认证吗?体验如何?你推荐其他人也使用SSH密钥吗,还是有什么理由他们应该远离它?让我们知道。