# 새 GPG 키 생성

기존 GPG 키가 없는 경우 커밋 및 태그 서명에 사용할 새 GPG 키를 생성할 수 있습니다.

### 지원되는 GPG 키 알고리즘

GitHub는 여러 GPG 키 알고리즘을 지원합니다. 지원되지 않는 알고리즘으로 생성된 키를 추가하려고 하면 오류가 발생할 수 있습니다.

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

## GPG 키 생성

> \[!NOTE]
> 새 GPG 키를 생성하기 전에 메일 주소를 확인했는지 확인합니다. 메일 주소를 확인하지 않은 경우 GPG를 사용하여 커밋 및 태그에 서명할 수 없습니다.  자세한 내용은 [이메일 주소 확인](/ko/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address)을(를) 참조하세요.

1. 해당 운영 체제에 대한 [GPG 명령줄 도구](https://www.gnupg.org/download/)를 다운로드 및 설치합니다. 일반적으로 운영 체제에 대한 최신 버전을 설치하는 것이 좋습니다.

2. <span class="platform-mac">터미널</span><span class="platform-linux">터미널</span><span class="platform-windows">Git Bash</span>를 엽니다.

3. GPG 키 쌍을 생성합니다. 여러 버전의 GPG가 있으므로 적절한 키 생성 명령을 찾으려면 관련 [*기본 페이지*](https://en.wikipedia.org/wiki/Man_page)를 참조해야 할 수 있습니다.
   * 버전 2.1.17 이상인 경우 아래 텍스트를 붙여넣어 GPG 키 쌍을 생성합니다.

     ```shell copy
     gpg --full-generate-key
     ```

   * 버전 2.1.17 이상이 아닌 경우 `gpg --full-generate-key` 명령이 작동하지 않습니다. 아래 텍스트를 붙여넣고 6단계로 건너뜁니다.

     ```shell copy
     gpg --default-new-key-algo rsa4096 --gen-key
     ```

4. 프롬프트에서 원하는 키 종류를 지정하거나 `Enter`를 눌러 기본값을 적용합니다.

5. 프롬프트에서 원하는 키 크기를 지정하거나 `Enter`를 눌러 기본값을 적용합니다.

6. 키가 유효해야 하는 시간을 입력합니다.
   `Enter` 키를 눌러 키가 만료되지 않음을 나타내는 기본 선택을 지정합니다. 만료 날짜가 필요하지 않은 경우 이 기본값을 적용하는 것이 좋습니다.

7. 선택한 내용이 올바른지 확인합니다.

8. 사용자 ID 정보를 입력합니다.

   > \[!NOTE]
   > 전자 메일 주소를 입력하라는 메시지가 표시되면 GitHub 계정의 확인된 전자 메일 주소를 입력해야 합니다.
   > 메일 주소를 프라이빗으로 유지하려는 경우 GitHub에서 제공한 `no-reply` 메일 주소를 사용합니다.
   > 자세한 내용은 [이메일 주소 확인](/ko/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address) 및 [커밋 메일 주소 설정](/ko/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address)을 참조하세요.

9. 보안 암호를 입력합니다.

10. `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`를 실행하여 `gpg2`를 사용할 Git도 구성해야 합니다.

11. GPG 키 목록에서 사용할 GPG 키 ID의 긴 형식을 복사합니다. 이 예제에서 GPG 키 ID는 `3AA5C34371567BD2`입니다.

    ```shell copy
    $ gpg --list-secret-keys --keyid-format=long
    /Users/hubot/.gnupg/secring.gpg
    ------------------------------------
    sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
    uid                          Hubot <hubot@example.com>
    ssb   4096R/4BB6D45482678BE3 2016-03-10
    ```

12. 사용하려는 GPG 키 ID로 대체하여 아래 텍스트를 붙여넣습니다. 이 예제에서 GPG 키 ID는 `3AA5C34371567BD2`입니다.

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

13. `-----BEGIN PGP PUBLIC KEY BLOCK-----`로 시작하고 `-----END PGP PUBLIC KEY BLOCK-----`로 끝나는 GPG 키를 복사합니다.

14. [ GPG 키를 GitHub 계정에 추가했습니다](/ko/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account).

## 추가 참고 자료

* [기존 GPG 키 확인](/ko/authentication/managing-commit-signature-verification/checking-for-existing-gpg-keys)
* [GitHub 계정에 GPG 키 추가](/ko/authentication/managing-commit-signature-verification/adding-a-gpg-key-to-your-github-account)
* [서명 키에 대해 Git에 알리기](/ko/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key)
* [GPG 키와 메일 연결](/ko/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key)
* [커밋 서명](/ko/authentication/managing-commit-signature-verification/signing-commits)
* [태그 서명](/ko/authentication/managing-commit-signature-verification/signing-tags)