# 检查现有 GPG 密钥

在生成 GPG 密钥之前，您可以检查是否有任何现有的 GPG 密钥。

### 支持的 GPG 密钥算法

GitHub 支持多种 GPG 密钥算法。 如果您尝试添加使用不支持的算法生成的密钥，可能会发生错误。

* RSA
* ElGamal
* DSA
* ECDH
* ECDSA
* EdDSA

> \[!NOTE]
> 默认情况下，GPG 不会在 macOS 或 Windows 上安装。 若要安装 GPG 命令行工具，请参阅 [GnuPG 的下载页面](https://www.gnupg.org/download/)。

1. 打开<span class="platform-mac">终端</span><span class="platform-linux">终端</span><span class="platform-windows">Git Bash</span>。
2. 使用 `gpg --list-secret-keys --keyid-format=long` 命令列出你拥有其公钥和私钥的长形式 GPG 密钥。 签名提交或标记需要私钥。

   ```shell copy
   gpg --list-secret-keys --keyid-format=long
   ```

   > \[!NOTE]
   > Linux 上的某些 GPG 安装可能需要改用 `gpg2 --list-keys --keyid-format LONG` 查看现有密钥的列表。 在这种情况下，还需要通过运行 `git config --global gpg.program gpg2` 来配置 Git 以使用 `gpg2`。
3. 检查命令输出以查看是否有 GPG 密钥对。
   * 如果没有 GPG 密钥对，或者不想使用任何可用于对提交和标记进行签名的密钥对，则[生成新的 GPG 密钥](/zh/authentication/managing-commit-signature-verification/generating-a-new-gpg-key)。
   * 如果存在现有的 GPG 密钥对，并且您希望使用它来对提交和标记进行签名，则可以使用以下命令显示公钥，并替换要使用的 GPG 密钥 ID。 在本例中，GPG 密钥 ID 为 `3AA5C34371567BD2`：

     ```shell
     $ gpg --armor --export 3AA5C34371567BD2
     # Prints the GPG public key, in ASCII armor format
     ```

     考虑使用选项 `--export-options export-minimal` 导出密钥，这可以防止错误读取包含弃用字段的密钥。

     然后，可以[将 GPG 密钥添加到GitHub帐户](/zh/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account)。

## 其他阅读材料

* [生成新 GPG 密钥](/zh/authentication/managing-commit-signature-verification/generating-a-new-gpg-key)
* [将 GPG 密钥添加到GitHub帐户](/zh/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account)
* [将您的签名密钥告知 Git](/zh/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key)
* [将电子邮件与 GPG 密钥关联](/zh/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key)
* [对提交签名](/zh/authentication/managing-commit-signature-verification/signing-commits)
* [对标记签名](/zh/authentication/managing-commit-signature-verification/signing-tags)