Featured image of post 使用 GPG 或 SSH 和驗證徽章簽署 Git 提交Featured image of post 使用 GPG 或 SSH 和驗證徽章簽署 Git 提交

使用 GPG 或 SSH 和驗證徽章簽署 Git 提交

透過設定 ssh 或 gpg 代理程式來簽署 git 提交、驗證 Github 上的身分標籤來保護專案分支。

在 GitHub 上查看提交日誌時,您可能會注意到某些提交旁邊有一個綠色的「已驗證」徽章。此標籤表示提交已加密簽名並確認來自合法的、經過驗證的使用者。

預設情況下,Git 允許開發人員使用 git config user.email 等簡單命令來配置他們選擇的任何名稱和電子郵件地址。這意味著冒充是微不足道的。為了確保身份驗證並防止未經授權的貢獻,強烈建議提交簽名

在本指南中,我們將探索如何使用 GPG 或 SSH 金鑰設定 Git 提交簽名,以在 GitHub 上獲得您自己的「已驗證」徽章。


1.什麼是提交簽名?

當您執行 git commit 命令時,提交簽章使用公鑰加密技術將數位簽章附加到提交資料。

這保證了兩個關鍵的安全概念:

  • 不可否認性:驗證提交確實是由金鑰所有者創作的。
  • 資料完整性:確保自套用簽署以來提交元資料和檔案變更未被修改或篡改。

雖然 GPG (GNU Privacy Guard) 金鑰歷來是唯一的選擇,但 Git 現在原生支援使用 SSH 金鑰 進行提交簽名,這使得已經使用 SSH 金鑰推送程式碼的開發人員的設定變得更加簡單。在本指南中,我們將重點放在 SSH 金鑰簽署。


2. 設定 SSH 金鑰提交簽名

第 1 步:找到或產生 SSH 金鑰

決定 SSH 公鑰的路徑(通常為 ~/.ssh/id_ed25519.pub)。如果您沒有,請使用以下命令產生它:

ssh-keygen -t ed25519 -C "[email protected]"

步驟 2:設定 Git 使用 SSH 進行簽名

執行以下命令告訴 Git 使用您的 SSH 金鑰對提交進行簽名:

# Instruct Git to use SSH as the cryptographic format
git config --global gpg.format ssh

# Point Git to your SSH public key file
git config --global user.signingkey ~/.ssh/id_ed25519.pub

步驟 3:啟用全域自動簽名

為了避免在每次提交時手動輸入 -S ,請將 Git 配置為自動簽署所有提交:

git config --global commit.gpgsign true

3. 向 GitHub 註冊密鑰

為了讓 GitHub 驗證簽名,您必須將公共簽名金鑰上傳到您的個人資料:

  1. 複製您的公鑰的內容(例如 cat ~/.ssh/id_ed25519.pub)。
  2. 導覽至您的 GitHub 個人資料,然後前往 設定 > SSH 和 GPG 金鑰
  3. 按一下“新 SSH 金鑰”。
  4. 金鑰類型 下拉式選單中,選擇 簽署金鑰(而不是驗證金鑰)。
  5. 貼上您的公鑰並點擊“新增 SSH 金鑰”。

4. 驗證配置

在儲存庫中建立一個虛擬提交:

git commit -m "chore: test signed commit"

您可以使用 log 命令在本機檢查簽名:

git log --show-signature -n 1

如果成功,您將看到以下開頭的驗證日誌: 佔位符_0

推送後,GitHub 將在您的提交旁邊顯示綠色的「已驗證」徽章。


結論

設定提交簽名是一種快速、有效率的安全升級。借助現代 Git 版本中基於 SSH 的簽名的支持,配置此安全網比以往更加簡單。保護您的程式碼身分並立即開始簽署您的提交。