{"meta":{"title":"生成新 GPG 密钥","intro":"如果没有现有的 GPG 密钥，您可以生成新的 GPG 密钥以用于签名提交和标记。","product":"身份验证","breadcrumbs":[{"href":"/zh/authentication","title":"身份验证"},{"href":"/zh/authentication/managing-commit-signature-verification","title":"验证提交签名"},{"href":"/zh/authentication/managing-commit-signature-verification/generating-a-new-gpg-key","title":"生成新 GPG 密钥"}],"documentType":"article"},"body":"# 生成新 GPG 密钥\n\n如果没有现有的 GPG 密钥，您可以生成新的 GPG 密钥以用于签名提交和标记。\n\n### 支持的 GPG 密钥算法\n\nGitHub 支持多种 GPG 密钥算法。 如果您尝试添加使用不支持的算法生成的密钥，可能会发生错误。\n\n* RSA\n* ElGamal\n* DSA\n* ECDH\n* ECDSA\n* EdDSA\n\n## 生成 GPG 密钥\n\n> \\[!NOTE]\n> 在生成新 GPG 密钥之前，请确保已验证你的电子邮件地址。 如果尚未验证电子邮件地址，将无法使用 GPG 对提交和标记进行签名。 有关详细信息，请参阅 [验证电子邮件地址](/zh/account-and-profile/how-tos/email-preferences/verifying-your-email-address)。\n\n1. 下载并安装适用于操作系统的 [GPG 命令行工具](https://www.gnupg.org/download/)。 一般来说，我们建议安装适用于您的操作系统的最新版本。\n\n2. 打开<span class=\"platform-mac\">终端</span><span class=\"platform-linux\">终端</span><span class=\"platform-windows\">Git Bash</span>。\n\n3. 生成 GPG 密钥对。 由于 GPG 有多个版本，因此可能需要查阅相关\\_手册页\\_来查找相应的密钥生成命令。\n   * 如果您使用的是 2.1.17 或更高版本，请粘贴以下文本以生成 GPG 密钥对。\n\n     ```shell copy\n     gpg --full-generate-key\n     ```\n\n   * 如果使用的不是版本 2.1.17 或更高版本，则 `gpg --full-generate-key` 命令不起作用。 请粘贴以下文本并跳到第 6 步。\n\n     ```shell copy\n     gpg --default-new-key-algo rsa4096 --gen-key\n     ```\n\n4. 在提示时，指定要生成的密钥类型，或按 `Enter` 键接受默认值。\n\n5. 在提示时，指定要生成的密钥大小，或按 `Enter` 键接受默认值。\n\n6. 输入密钥的有效时长。 按 `Enter` 键将指定默认选择，表示该密钥不会过期。 除非你需要过期日期，否则我们建议接受此默认值。\n\n7. 验证您的选择是否正确。\n\n8. 输入您的用户 ID 信息。\n\n   > \\[!NOTE]\n   > 当系统要求输入电子邮件地址时，请确保输入GitHub帐户的已验证电子邮件地址。\n\n要将电子邮件地址保密，请使用 GitHub 提供的 `no-reply` 电子邮件地址。\n\n有关详细信息，请参阅 [验证电子邮件地址](/zh/account-and-profile/how-tos/email-preferences/verifying-your-email-address) 和 [设置提交电子邮件地址](/zh/account-and-profile/how-tos/email-preferences/setting-your-commit-email-address)。\n\n1. 输入安全密码。\n\n2. 使用 `gpg --list-secret-keys --keyid-format=long` 命令列出你拥有其公钥和私钥的长形式 GPG 密钥。 签名提交或标记需要私钥。\n\n   ```shell copy\n   gpg --list-secret-keys --keyid-format=long\n   ```\n\n   > \\[!NOTE]\n   > Linux 上的某些 GPG 安装可能需要改用 `gpg2 --list-keys --keyid-format LONG` 查看现有密钥的列表。 在这种情况下，还需要通过运行 `git config --global gpg.program gpg2` 来配置 Git 以使用 `gpg2`。\n\n3. 从 GPG 密钥列表中复制您想要使用的 GPG 密钥 ID 的长形式。 在本例中，GPG 密钥 ID 为 `3AA5C34371567BD2`：\n\n   ```shell copy\n   $ gpg --list-secret-keys --keyid-format=long\n   /Users/hubot/.gnupg/secring.gpg\n   ------------------------------------\n   sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]\n   uid                          Hubot <hubot@example.com>\n   ssb   4096R/4BB6D45482678BE3 2016-03-10\n   ```\n\n4. 粘贴下面的文本（替换为您要使用的 GPG 密钥 ID）。 在本例中，GPG 密钥 ID 为 `3AA5C34371567BD2`：\n\n   ```shell copy\n   gpg --armor --export 3AA5C34371567BD2\n   # Prints the GPG key ID, in ASCII armor format\n   ```\n\n5. 复制以 `-----BEGIN PGP PUBLIC KEY BLOCK-----` 开头并以 `-----END PGP PUBLIC KEY BLOCK-----` 结尾的 GPG 密钥。\n\n6. [将 GPG 密钥添加到GitHub帐户](/zh/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account)。\n\n## 延伸阅读\n\n* [检查现有 GPG 密钥](/zh/authentication/managing-commit-signature-verification/checking-for-existing-gpg-keys)\n* [将 GPG 密钥添加到GitHub帐户](/zh/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account)\n* [将您的签名密钥告知 Git](/zh/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key)\n* [将电子邮件与 GPG 密钥关联](/zh/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key)\n* [对提交签名](/zh/authentication/managing-commit-signature-verification/signing-commits)\n* [对标记签名](/zh/authentication/managing-commit-signature-verification/signing-tags)"}