Back to guides返回指南返回指南ガイド一覧に戻るBumalik sa mga gabay

GPG Key Setup Guide for GiteaGitea GPG 金鑰設定指南Gitea GPG 密钥设置指南Gitea GPG鍵セットアップガイドGPG Key Setup Guide para sa Gitea

Sign your Git commits to verify your identity on git.datawords.hk簽署你的 Git commit 以驗證你在 git.datawords.hk 上的身份签署你的 Git commit 以验证你在 git.datawords.hk 上的身份git.datawords.hk であなたの身元を確認するために Git コミットに署名しましょうLagdaan ang iyong mga Git commit para i-verify ang iyong identity sa git.datawords.hk

Make sure GPG is installed on your system:確認你的系統已安裝 GPG:确认你的系统已安装 GPG:システムに GPG がインストールされていることを確認してください:Siguraduhing naka-install ang GPG sa iyong system:

macOS:

$ brew install gnupg

Windows (Git Bash):

GPG comes bundled with Git for Windows. No extra installation needed.GPG 已內建於 Git for Windows 中,無需額外安裝。GPG 已内置于 Git for Windows 中,无需额外安装。GPG は Git for Windows に同梱されています。追加のインストールは不要です。Kasama na ang GPG sa Git for Windows. Hindi na kailangan ng karagdagang installation.

Linux (Debian/Ubuntu):

$ sudo apt install gnupg

Verify the installation:驗證安裝:验证安装:インストールを確認してください:I-verify ang installation:

$ gpg --version
gpg (GnuPG) 2.4.x
...

Run the following command to generate a new GPG key pair:執行以下指令產生新的 GPG 金鑰對:运行以下命令生成新的 GPG 密钥对:次のコマンドを実行して新しい GPG 鍵ペアを生成します:Patakbuhin ang sumusunod na command para gumawa ng bagong GPG key pair:

$ gpg --full-generate-key

You will be prompted with several options. Choose the following:系統會提示你選擇以下選項:系统会提示你选择以下选项:いくつかのオプションが表示されます。以下を選択してください:Magkakaroon ng ilang mga pagpipilian. Piliin ang mga sumusunod:

  1. Key type: Select (1) RSA and RSA (default)金鑰類型:選擇 (1) RSA and RSA(預設)密钥类型:选择 (1) RSA and RSA(默认)鍵の種類:(1) RSA and RSA(デフォルト)を選択Uri ng key: Piliin ang (1) RSA and RSA (default)
  2. Key size: Enter 4096 for maximum security金鑰大小:輸入 4096 以獲得最高安全性密钥大小:输入 4096 以获得最高安全性鍵のサイズ:最大のセキュリティのために 4096 を入力Laki ng key: Ilagay ang 4096 para sa pinakamataas na seguridad
  3. Expiration: Choose based on your preference (e.g. 1y for 1 year, or 0 for no expiry)有效期:依需求選擇(例如 1y 為一年,0 為永不過期)有效期:根据需要选择(例如 1y 为一年,0 为永不过期)有効期限:お好みで選択(例:1y で1年、0 で無期限)Expiration: Piliin ayon sa iyong kagustuhan (hal. 1y para sa isang taon, o 0 para walang expiry)
  4. Real name: Enter your full name (same as your Gitea display name)真實姓名:輸入你的全名(與 Gitea 顯示名稱相同)真实姓名:输入你的全名(与 Gitea 显示名称相同)本名:フルネームを入力(Gitea の表示名と同じもの)Tunay na pangalan: Ilagay ang iyong buong pangalan (kapareho ng Gitea display name mo)
  5. Email: Enter the email address associated with your Gitea account電子郵件:輸入與你 Gitea 帳號關聯的電子郵件地址电子邮箱:输入与你 Gitea 账号关联的电子邮箱地址メールアドレス:Gitea アカウントに関連付けられたメールアドレスを入力Email: Ilagay ang email address na nakakonekta sa iyong Gitea account
  6. Comment: Optional, can be left empty備註:可選,可留空备注:可选,可留空コメント:任意、空欄でも可Komento: Opsyonal, pwedeng iwanang blangko
  7. Passphrase: Set a strong passphrase to protect your private key密碼:設定一個強密碼以保護你的私鑰密码:设置一个强密码以保护你的私钥パスフレーズ:秘密鍵を保護するための強力なパスフレーズを設定Passphrase: Mag-set ng malakas na passphrase para protektahan ang iyong private key
Important:重要:重要:重要:Mahalaga: The email you enter must match the email on your Gitea account. Otherwise, Gitea cannot verify your commits.你輸入的電子郵件必須與 Gitea 帳號的電子郵件相同,否則 Gitea 無法驗證你的 commit。你输入的电子邮箱必须与 Gitea 账号的电子邮箱相同,否则 Gitea 无法验证你的 commit。入力するメールアドレスは Gitea アカウントのメールアドレスと一致する必要があります。一致しない場合、Gitea はコミットを検証できません。Ang email na ilalagay mo ay kailangang pareho sa email sa iyong Gitea account. Kung hindi, hindi ma-verify ng Gitea ang iyong mga commit.

Example session:範例操作過程:示例操作过程:操作例:Halimbawang session:

$ gpg --full-generate-key
Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
  (14) Existing key from card
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072) 4096
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 1y

Real name: John Doe
Email address: john.doe@datawords.asia
Comment:
You selected this USER-ID:
    "John Doe <john.doe@datawords.asia>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
Tip:提示:提示:ヒント:Tip: A passphrase dialog will appear. Choose a strong passphrase you can remember — you'll need it when signing commits.系統會彈出密碼輸入框。請選擇一個你記得住的強密碼——簽署 commit 時需要用到。系统会弹出密码输入框。请选择一个你记得住的强密码——签署 commit 时需要用到。パスフレーズ入力ダイアログが表示されます。覚えられる強力なパスフレーズを選んでください。コミット署名時に必要になります。May lalabas na passphrase dialog. Pumili ng malakas na passphrase na matatandaan mo — kakailanganin mo ito kapag nagsa-sign ng mga commit.

First, find your GPG key ID:首先,找到你的 GPG 金鑰 ID:首先,找到你的 GPG 密钥 ID:まず、GPG 鍵 ID を確認します:Una, hanapin ang iyong GPG key ID:

$ gpg --list-secret-keys --keyid-format=long
sec   rsa4096/ABCDEF1234567890 2026-03-13 [SC] [expires: 2027-03-13]
      C1CB417F5F2F9E4D147F01C4ABCDEF1234567890
uid                 [ultimate] John Doe <john.doe@datawords.asia>
ssb   rsa4096/1234567890ABCDEF 2026-03-13 [E] [expires: 2027-03-13]

The key ID is the part after rsa4096/ on the sec line. In this example: ABCDEF1234567890金鑰 ID 是 sec 那行 rsa4096/ 後面的部分。在此範例中為:ABCDEF1234567890密钥 ID 是 sec 那行 rsa4096/ 后面的部分。在此示例中为:ABCDEF1234567890鍵 ID は sec 行の rsa4096/ の後の部分です。この例では:ABCDEF1234567890Ang key ID ay ang bahagi pagkatapos ng rsa4096/ sa sec na linya. Sa halimbawang ito: ABCDEF1234567890

Now export the public key in ASCII armor format:匯出 ASCII armor 格式的公鑰:导出 ASCII armor 格式的公钥:次に、ASCII armor 形式で公開鍵をエクスポートします:Ngayon, i-export ang public key sa ASCII armor format:

$ gpg --armor --export ABCDEF1234567890

This will output your public key block. Copy the entire output including the header and footer lines:這會輸出你的公鑰區塊。請複製整段輸出,包含開頭和結尾的標記行:这会输出你的公钥块。请复制全部输出,包括开头和结尾的标记行:公開鍵ブロックが出力されます。ヘッダーとフッター行を含む出力全体をコピーしてください:Ito ang magiging output ng iyong public key block. Kopyahin ang buong output kasama ang header at footer lines:

-----BEGIN PGP PUBLIC KEY BLOCK-----

mQINBGbS... (long base64-encoded data)
...
-----END PGP PUBLIC KEY BLOCK-----
Tip:提示:提示:ヒント:Tip: You can also pipe the output to your clipboard directly:你也可以直接將輸出導向剪貼簿:你也可以直接将输出导向剪贴板:出力を直接クリップボードにパイプすることもできます:Pwede mo ring i-pipe ang output direkta sa iyong clipboard:
macOS: gpg --armor --export KEY_ID | pbcopy
Linux: gpg --armor --export KEY_ID | xclip -selection clipboard
Windows (Git Bash): gpg --armor --export KEY_ID | clip

Open git.datawords.hk in your browser and log in.在瀏覽器中開啟 git.datawords.hk 並登入。在浏览器中打开 git.datawords.hk 并登录。ブラウザで git.datawords.hk を開いてログインしてください。Buksan ang git.datawords.hk sa iyong browser at mag-log in.

4a. Click your avatar in the top-right corner, then click Settings:點擊右上角的頭像,然後點擊 Settings点击右上角的头像,然后点击 Settings右上のアバターをクリックし、Settings をクリックしてください:I-click ang iyong avatar sa kanang-itaas na sulok, pagkatapos i-click ang Settings:

Gitea profile dropdown showing Settings option
Click your avatar → Settings點擊頭像 → Settings点击头像 → Settingsアバターをクリック → SettingsI-click ang iyong avatar → Settings

4b. In the left sidebar, click SSH / GPG Keys:在左側選單中點擊 SSH / GPG Keys在左侧菜单中点击 SSH / GPG Keys左サイドバーで SSH / GPG Keys をクリックしてください:Sa kaliwang sidebar, i-click ang SSH / GPG Keys:

Gitea SSH/GPG Keys settings page
User Settings → SSH / GPG KeysUser Settings → SSH / GPG KeysUser Settings → SSH / GPG KeysUser Settings → SSH / GPG KeysUser Settings → SSH / GPG Keys

4c. Scroll down to the "Manage GPG Keys" section and click "Add Key":向下捲動到 "Manage GPG Keys" 區塊,點擊 "Add Key"向下滚动到 "Manage GPG Keys" 部分,点击 "Add Key""Manage GPG Keys" セクションまでスクロールし、"Add Key" をクリックしてください:Mag-scroll pababa sa "Manage GPG Keys" na seksyon at i-click ang "Add Key":

Gitea Add GPG Key form
Paste your public key into the Content field and click "Add Key"將公鑰貼到 Content 欄位中,然後點擊 "Add Key"将公钥粘贴到 Content 字段中,然后点击 "Add Key"Content フィールドに公開鍵を貼り付けて "Add Key" をクリックI-paste ang iyong public key sa Content field at i-click ang "Add Key"

4d. Paste the entire public key block (from Step 3) into the Content text area, then click the green "Add Key" button.將完整的公鑰區塊(來自第 3 步)貼到 Content 文字框中,然後點擊綠色的 "Add Key" 按鈕。将完整的公钥块(来自第 3 步)粘贴到 Content 文本框中,然后点击绿色的 "Add Key" 按钮。公開鍵ブロック全体(ステップ 3 から)を Content テキストエリアに貼り付け、緑色の "Add Key" ボタンをクリックしてください。I-paste ang buong public key block (mula sa Step 3) sa Content text area, pagkatapos i-click ang berdeng "Add Key" button.

Success!成功!成功!成功!Tagumpay! You should see your key appear in the GPG Keys list with its fingerprint and email.你應該會看到你的金鑰出現在 GPG Keys 列表中,顯示其指紋和電子郵件。你应该会看到你的密钥出现在 GPG Keys 列表中,显示其指纹和电子邮箱。GPG Keys リストにフィンガープリントとメールアドレス付きで鍵が表示されるはずです。Dapat makita mo na ang iyong key sa GPG Keys list na may fingerprint at email.

Tell Git to use your GPG key for signing commits:設定 Git 使用你的 GPG 金鑰簽署 commit:配置 Git 使用你的 GPG 密钥签署 commit:コミットの署名に GPG 鍵を使用するよう Git に設定します:Sabihin sa Git na gamitin ang iyong GPG key para sa pag-sign ng mga commit:

# Set your signing key (use the key ID from Step 3)
$ git config --global user.signingkey ABCDEF1234567890

# Enable automatic commit signing
$ git config --global commit.gpgsign true

# (Optional) Also sign tags by default
$ git config --global tag.gpgsign true
macOS users:macOS 使用者:macOS 用户:macOS ユーザー:Para sa mga macOS user: If you get error: gpg failed to sign the data, you may need to set the GPG TTY:如果出現 error: gpg failed to sign the data 錯誤,可能需要設定 GPG TTY:如果出现 error: gpg failed to sign the data 错误,可能需要设置 GPG TTY:error: gpg failed to sign the data エラーが出た場合、GPG TTY の設定が必要かもしれません:Kung lumabas ang error: gpg failed to sign the data, maaaring kailangan mong i-set ang GPG TTY:
$ echo 'export GPG_TTY=$(tty)' >> ~/.zshrc
$ source ~/.zshrc
Windows users:Windows 使用者:Windows 用户:Windows ユーザー:Para sa mga Windows user: If signing fails, tell Git where to find GPG:如果簽署失敗,請告訴 Git GPG 的路徑:如果签署失败,请告诉 Git GPG 的路径:署名に失敗する場合、Git に GPG の場所を教えてください:Kung hindi gumana ang signing, sabihin sa Git kung nasaan ang GPG:
$ git config --global gpg.program "C:/Program Files/Git/usr/bin/gpg.exe"

The exact path may vary. Check with where gpg in Git Bash.實際路徑可能不同。在 Git Bash 中用 where gpg 確認。实际路径可能不同。在 Git Bash 中用 where gpg 确认。正確なパスは異なる場合があります。Git Bash で where gpg で確認してください。Ang eksaktong path ay maaaring iba. I-check gamit ang where gpg sa Git Bash.

Make a test commit in any repository:在任何 repository 中建立一個測試 commit:在任何仓库中创建一个测试 commit:任意のリポジトリでテストコミットを作成します:Gumawa ng test commit sa kahit anong repository:

$ echo "test" >> test.txt
$ git add test.txt
$ git commit -m "test: verify GPG signing"

If prompted for your passphrase, enter it. Then verify the commit is signed:如果系統要求輸入密碼,請輸入。然後驗證 commit 是否已簽署:如果系统要求输入密码,请输入。然后验证 commit 是否已签署:パスフレーズの入力を求められたら入力してください。次にコミットが署名されていることを確認します:Kung hiningi ang iyong passphrase, ilagay ito. Pagkatapos, i-verify na naka-sign ang commit:

$ git log --show-signature -1
commit abc1234... (HEAD -> main)
gpg: Signature made Thu 13 Mar 2026 03:00:00 PM HKT
gpg:                using RSA key C1CB417F5F2F9E4D147F01C4ABCDEF1234567890
gpg: Good signature from "John Doe <john.doe@datawords.asia>" [ultimate]
Author: John Doe <john.doe@datawords.asia>
Date:   Thu Mar 13 15:00:00 2026 +0800

    test: verify GPG signing

Push to Gitea and check the commit page — you should see a green "Verified" badge next to your commit.推送到 Gitea 並查看 commit 頁面——你應該會看到 commit 旁邊有綠色的 "Verified" 標籤。推送到 Gitea 并查看 commit 页面——你应该会看到 commit 旁边有绿色的 "Verified" 标签。Gitea にプッシュしてコミットページを確認してください。コミットの横に緑色の "Verified" バッジが表示されるはずです。I-push sa Gitea at tingnan ang commit page — dapat makita mo ang berdeng "Verified" badge sa tabi ng iyong commit.

Done!完成!完成!完了!Tapos na! All your future commits will be automatically signed and verified on Gitea.你之後所有的 commit 都會自動被簽署並在 Gitea 上驗證。你之后所有的 commit 都会自动被签署并在 Gitea 上验证。今後のすべてのコミットは自動的に署名され、Gitea で検証されます。Lahat ng iyong mga commit mula ngayon ay awtomatikong mala-lagdaan at ma-ve-verify sa Gitea.
Problem問題问题問題Problema Solution解決方案解决方案解決策Solusyon
error: gpg failed to sign the data Run export GPG_TTY=$(tty) and try again. Add it to your shell profile.執行 export GPG_TTY=$(tty) 然後重試。將此加入你的 shell 設定檔。运行 export GPG_TTY=$(tty) 然后重试。将此添加到你的 shell 配置文件。export GPG_TTY=$(tty) を実行して再試行してください。シェルプロファイルに追加してください。Patakbuhin ang export GPG_TTY=$(tty) at subukan ulit. Idagdag ito sa iyong shell profile.
Commit shows as "Unverified" on GiteaCommit 在 Gitea 上顯示 "Unverified"Commit 在 Gitea 上显示 "Unverified"Gitea でコミットが "Unverified" と表示されるAng commit ay lumalabas na "Unverified" sa Gitea The email in your GPG key must match your Gitea account email exactly. Check with gpg --list-keys.GPG 金鑰中的電子郵件必須與 Gitea 帳號的電子郵件完全一致。用 gpg --list-keys 確認。GPG 密钥中的电子邮箱必须与 Gitea 账号的电子邮箱完全一致。用 gpg --list-keys 确认。GPG 鍵のメールアドレスは Gitea アカウントのメールアドレスと完全に一致する必要があります。gpg --list-keys で確認してください。Ang email sa iyong GPG key ay kailangang eksaktong pareho sa email ng iyong Gitea account. I-check gamit ang gpg --list-keys.
GPG asks for passphrase every commit每次 commit 都要輸入密碼每次 commit 都要输入密码コミットのたびにパスフレーズを求められるLagi na lang hinihingi ang passphrase sa bawat commit Use gpg-agent to cache your passphrase. Add default-cache-ttl 3600 to ~/.gnupg/gpg-agent.conf.使用 gpg-agent 快取密碼。將 default-cache-ttl 3600 加入 ~/.gnupg/gpg-agent.conf使用 gpg-agent 缓存密码。将 default-cache-ttl 3600 添加到 ~/.gnupg/gpg-agent.confgpg-agent を使ってパスフレーズをキャッシュしてください。~/.gnupg/gpg-agent.confdefault-cache-ttl 3600 を追加してください。Gumamit ng gpg-agent para i-cache ang iyong passphrase. Idagdag ang default-cache-ttl 3600 sa ~/.gnupg/gpg-agent.conf.
Key expired金鑰過期密钥过期鍵の有効期限切れNag-expire na ang key Extend it: gpg --edit-key KEY_IDexpire → set new date → save. Re-export and update on Gitea.延長有效期:gpg --edit-key KEY_IDexpire → 設定新日期 → save。重新匯出並更新 Gitea 上的金鑰。延长有效期:gpg --edit-key KEY_IDexpire → 设置新日期 → save。重新导出并更新 Gitea 上的密钥。延長する:gpg --edit-key KEY_IDexpire → 新しい日付を設定 → save。再エクスポートして Gitea で更新してください。I-extend ito: gpg --edit-key KEY_IDexpire → mag-set ng bagong petsa → save. I-re-export at i-update sa Gitea.
Multiple GPG keys, wrong one used有多把 GPG 金鑰,用錯了有多个 GPG 密钥,用错了複数の GPG 鍵があり、間違った鍵が使われているMaraming GPG key, mali ang nagamit Set the correct key per repo: git config user.signingkey CORRECT_KEY_ID (without --global).為每個 repo 設定正確的金鑰:git config user.signingkey CORRECT_KEY_ID(不加 --global)。为每个仓库设置正确的密钥:git config user.signingkey CORRECT_KEY_ID(不加 --global)。リポジトリごとに正しい鍵を設定:git config user.signingkey CORRECT_KEY_ID--global なし)。I-set ang tamang key sa bawat repo: git config user.signingkey CORRECT_KEY_ID (walang --global).