重複的用戶名和密碼提示是令人討厭且浪費時間的。
如果您使用密碼認證與您的Gitlab帳戶,每個動作都需要您發送您的憑證,無論是作為命令的一部分還是通過交互式提示。尤其是在GitLab中自動化CI/CD管線時,密碼認證可能既低效又可能構成安全風險。為什麼不結束您的苦難,並切換到安全殼層(SSH)認證使用Gitlab 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 帳戶。剩下的是測試您的 SSH 金鑰是否有效,方法是使用它連線並驗證到 Gitlab。
登錄
在 VS Code 終端上,執行以下命令連線到您的 Gitlab 帳戶。
假設您是第一次連線,該命令會提示您驗證主機的真實性並確認連線。在提示處輸入yes
並按Enter
確認。
注意,您無需輸入使用者名稱和密碼即可登錄?相反,ssh 命令會自動使用您的 SSH 金鑰進行驗證。成功登錄後,您應該會看到一條歡迎消息,顯示“歡迎來到 Gitlab @username!“。

發佈新專案
您已確認您的 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帳戶了。執行以下指令將儲存庫從你的電腦推送到Gitlab帳戶。
如下所示,項目的建立成功了,而且沒有要求輸入憑證!Git使用你的SSH金鑰進行Gitlab身份驗證。

9. 最後,確認你的新Gitlab項目在線上存在。使用瀏覽器,前往https://gitlab.com/dashboard/projects 來查看你現有項目的清單。你應該能看到清單上有my-first-project這個名字。

10. 此外,點擊項目名稱,你應該能看到README.md檔案和內容顯示出來。

結論
恭喜您在本教程中取得了如此大的進展!在這個逐步教程中,您已經學會了如何生成和使用SSH金鑰,以便將安全的版本控制部署到您的GitLab存儲庫中。
有了這些知識,您現在可以在GitLab存儲庫上執行任務,而不必擔心意外地公開您的用戶名和密碼。
您以前使用過GitLab SSH金鑰認證嗎?使用體驗如何?您是否建議其他人也使用SSH金鑰,或者有任何理由不要使用它?請告訴我們。