{"meta":{"title":"서명 키에 대해 Git에 알리기","intro":"로컬로 커밋에 서명하려면 사용하려는 GPG, SSH 또는 X.509 키가 있음을 Git에 알려야 합니다.","product":"인증","breadcrumbs":[{"href":"/ko/authentication","title":"인증"},{"href":"/ko/authentication/managing-commit-signature-verification","title":"커밋 서명 확인"},{"href":"/ko/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key","title":"서명 키에 대해 Git에 알리기"}],"documentType":"article"},"body":"# 서명 키에 대해 Git에 알리기\n\n로컬로 커밋에 서명하려면 사용하려는 GPG, SSH 또는 X.509 키가 있음을 Git에 알려야 합니다.\n\n## GPG 키에 대해 Git에 알리기\n\n<div class=\"ghd-tool mac\">\n\nGitHub.com에서 커밋 주체 ID 및 계정과 연결된 확인된 이메일 주소와 일치하는 GPG 키를 사용하는 경우 커밋 서명 및 태그 서명을 시작할 수 있습니다.\n\n> \\[!NOTE]\n> 커밋자 ID와 일치하는 GPG 키가 없는 경우 메일을 기존 키와 연결해야 합니다. 자세한 내용은 [GPG 키와 메일 연결](/ko/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key)을(를) 참조하세요.\n\n여러 GPG 키가 있는 경우 사용할 GPG 키를 Git에 알려야 합니다.\n\n1. <span class=\"platform-mac\">터미널</span><span class=\"platform-linux\">터미널</span><span class=\"platform-windows\">Git Bash</span>를 엽니다.\n\n2. 이전에 `--gpg-sign`(으)로 서명할 때 다른 키 형식을 사용하도록 Git을 구성한 경우, 이 구성을 설정 해제하면 기본 형식인 `openpgp`이(가) 사용됩니다.\n\n   ```shell\n   git config --global --unset gpg.format\n   ```\n\n3. `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`를 실행하여 `gpg2`를 사용할 Git도 구성해야 합니다.\n\n4. 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\n5. Git에서 기본 GPG 서명 키를 설정하려면 아래 텍스트를 붙여넣고 사용하려는 GPG 기본 키 ID로 대체합니다. 이 예제에서 GPG 키 ID는 `3AA5C34371567BD2`입니다.\n\n   ```shell\n   git config --global user.signingkey 3AA5C34371567BD2\n   ```\n\n   또는 하위 키를 사용할 수 있습니다. 이 예제에서 GPG 하위 키 ID는 `4BB6D45482678BE3`입니다.\n\n   ```shell\n   git config --global user.signingkey 4BB6D45482678BE3\n   ```\n\n   여러 키와 하위 키를 사용하는 경우 키에 느낌표 `!`를 추가하여 Git에게 이것이 선호하는 키임을 알려야 합니다. 경우에 따라 백슬래시 `\\!`로 느낌표를 이스케이프해야 할 수 있습니다.\n\n6. 필요에 따라 기본적으로 모든 커밋과 태그에 서명하도록 Git을 구성하려면 다음 명령을 입력합니다.\n\n   ```shell\n   git config --global commit.gpgsign true\n   git config --global tag.gpgSign true\n   ```\n\n   자세한 내용은 [커밋 서명](/ko/authentication/managing-commit-signature-verification/signing-commits)을(를) 참조하세요.\n\n7. GPG 도구 모음을 사용하지 않는 경우 `zsh` 셸에서 다음 명령을 실행하여 `.zshrc`파일(있는 경우)에 또는 `.zprofile` 파일에 GPG 키를 추가합니다.\n\n   ```shell\n   $ if [ -r ~/.zshrc ]; then echo -e '\\nexport GPG_TTY=$(tty)' >> ~/.zshrc; \\\n     else echo -e '\\nexport GPG_TTY=$(tty)' >> ~/.zprofile; fi\n   ```\n\n   또는 `bash` 셸을 사용하는 경우 다음 명령을 실행합니다.\n\n   ```shell\n   $ if [ -r ~/.bash_profile ]; then echo -e '\\nexport GPG_TTY=$(tty)' >> ~/.bash_profile; \\\n     else echo -e '\\nexport GPG_TTY=$(tty)' >> ~/.profile; fi\n   ```\n\n8. 필요에 따라 필요한 경우 PIN 또는 암호를 입력하라는 메시지를 표시하려면 `pinentry-mac`을 설치합니다. 예를 들어 [Homebrew](https://brew.sh/) 사용하여 다음을 수행합니다.\n\n   ```shell\n   brew install pinentry-mac\n   echo \"pinentry-program $(which pinentry-mac)\" >> ~/.gnupg/gpg-agent.conf\n   killall gpg-agent\n   ```\n\n</div>\n\n<div class=\"ghd-tool windows\">\n\nGitHub.com에서 커밋 주체 ID 및 계정과 연결된 확인된 이메일 주소와 일치하는 GPG 키를 사용하는 경우 커밋 서명 및 태그 서명을 시작할 수 있습니다.\n\n> \\[!NOTE]\n> 커밋자 ID와 일치하는 GPG 키가 없는 경우 메일을 기존 키와 연결해야 합니다. 자세한 내용은 [GPG 키와 메일 연결](/ko/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key)을(를) 참조하세요.\n\n여러 GPG 키가 있는 경우 사용할 GPG 키를 Git에 알려야 합니다.\n\n1. <span class=\"platform-mac\">터미널</span><span class=\"platform-linux\">터미널</span><span class=\"platform-windows\">Git Bash</span>를 엽니다.\n2. 이전에 `--gpg-sign`(으)로 서명할 때 다른 키 형식을 사용하도록 Git을 구성한 경우, 이 구성을 설정 해제하면 기본 형식인 `openpgp`이(가) 사용됩니다.\n\n   ```shell\n   git config --global --unset gpg.format\n   ```\n3. `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`를 실행하여 `gpg2`를 사용할 Git도 구성해야 합니다.\n4. 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   ```\n5. Git에서 기본 GPG 서명 키를 설정하려면 아래 텍스트를 붙여넣고 사용하려는 GPG 기본 키 ID로 대체합니다. 이 예제에서 GPG 키 ID는 `3AA5C34371567BD2`입니다.\n\n   ```shell\n   git config --global user.signingkey 3AA5C34371567BD2\n   ```\n\n   또는 하위 키를 사용할 수 있습니다. 이 예제에서 GPG 하위 키 ID는 `4BB6D45482678BE3`입니다.\n\n   ```shell\n   git config --global user.signingkey 4BB6D45482678BE3\n   ```\n\n   여러 키와 하위 키를 사용하는 경우 키에 느낌표 `!`를 추가하여 Git에게 이것이 선호하는 키임을 알려야 합니다. 경우에 따라 백슬래시 `\\!`로 느낌표를 이스케이프해야 할 수 있습니다.\n6. 필요에 따라 기본적으로 모든 커밋과 태그에 서명하도록 Git을 구성하려면 다음 명령을 입력합니다.\n\n   ```shell\n   git config --global commit.gpgsign true\n   git config --global tag.gpgSign true\n   ```\n\n   자세한 내용은 [커밋 서명](/ko/authentication/managing-commit-signature-verification/signing-commits)을(를) 참조하세요.\n\n</div>\n\n<div class=\"ghd-tool linux\">\n\nGitHub.com에서 커밋 주체 ID 및 계정과 연결된 확인된 이메일 주소와 일치하는 GPG 키를 사용하는 경우 커밋 서명 및 태그 서명을 시작할 수 있습니다.\n\n> \\[!NOTE]\n> 커밋자 ID와 일치하는 GPG 키가 없는 경우 메일을 기존 키와 연결해야 합니다. 자세한 내용은 [GPG 키와 메일 연결](/ko/authentication/managing-commit-signature-verification/associating-an-email-with-your-gpg-key)을(를) 참조하세요.\n\n여러 GPG 키가 있는 경우 사용할 GPG 키를 Git에 알려야 합니다.\n\n1. <span class=\"platform-mac\">터미널</span><span class=\"platform-linux\">터미널</span><span class=\"platform-windows\">Git Bash</span>를 엽니다.\n2. 이전에 `--gpg-sign`(으)로 서명할 때 다른 키 형식을 사용하도록 Git을 구성한 경우, 이 구성을 설정 해제하면 기본 형식인 `openpgp`이(가) 사용됩니다.\n\n   ```shell\n   git config --global --unset gpg.format\n   ```\n3. `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`를 실행하여 `gpg2`를 사용할 Git도 구성해야 합니다.\n4. 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   ```\n5. Git에서 기본 GPG 서명 키를 설정하려면 아래 텍스트를 붙여넣고 사용하려는 GPG 기본 키 ID로 대체합니다. 이 예제에서 GPG 키 ID는 `3AA5C34371567BD2`입니다.\n\n   ```shell\n   git config --global user.signingkey 3AA5C34371567BD2\n   ```\n\n   또는 하위 키를 사용할 수 있습니다. 이 예제에서 GPG 하위 키 ID는 `4BB6D45482678BE3`입니다.\n\n   ```shell\n   git config --global user.signingkey 4BB6D45482678BE3\n   ```\n\n   여러 키와 하위 키를 사용하는 경우 키에 느낌표 `!`를 추가하여 Git에게 이것이 선호하는 키임을 알려야 합니다. 경우에 따라 백슬래시 `\\!`로 느낌표를 이스케이프해야 할 수 있습니다.\n6. 필요에 따라 기본적으로 모든 커밋과 태그에 서명하도록 Git을 구성하려면 다음 명령을 입력합니다.\n\n   ```shell\n   git config --global commit.gpgsign true\n   git config --global tag.gpgSign true\n   ```\n\n   자세한 내용은 [커밋 서명](/ko/authentication/managing-commit-signature-verification/signing-commits)을(를) 참조하세요.\n7. `.bashrc` 시작 파일에 GPG 키를 추가하려면 다음 명령을 실행합니다.\n\n   ```bash\n   [ -f ~/.bashrc ] && echo -e '\\nexport GPG_TTY=$(tty)' >> ~/.bashrc\n   ```\n\n</div>\n\n## Git에 SSH 키에 대해 알리기\n\n기존 SSH 키를 사용하여 커밋 및 태그에 서명하거나 서명을 위해 특별히 새 키를 생성할 수 있습니다. 자세한 내용은 [새 SSH 키 생성 및 ssh-agent에 추가](/ko/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)을(를) 참조하세요.\n\n> \\[!NOTE]\n> SSH 서명 확인은 Git 2.34 이상에서 사용할 수 있습니다. Git 버전을 업데이트하려면 [Git](https://git-scm.com/downloads) 웹 사이트를 참조하세요.\n\n1. <span class=\"platform-mac\">터미널</span><span class=\"platform-linux\">터미널</span><span class=\"platform-windows\">Git Bash</span>를 엽니다.\n2. SSH를 사용하여 커밋 및 태그에 서명하도록 Git을 구성합니다.\n\n   ```bash\n   git config --global gpg.format ssh\n   ```\n3. Git에서 SSH 서명 키를 설정하려면 아래 텍스트를 붙여넣고, **/PATH/TO/.SSH/KEY.PUB**를 사용하려는 공개 키의 경로로 대체합니다.\n\n   ```bash\n   git config --global user.signingkey /PATH/TO/.SSH/KEY.PUB\n   ```\n\n<div class=\"ghd-tool windows\">\n\n## Git에 X.509 키에 대해 알리기\n\n[smimesign](https://github.com/github/smimesign)을 사용하여 S/MIME를 통해 커밋 및 태그에 서명할 수 있습니다.\n\n> \\[!NOTE]\n> S/MIME 서명 확인은 Git 2.19 이상에서 사용할 수 있습니다. Git 버전을 업데이트하려면 [Git](https://git-scm.com/downloads) 웹 사이트를 참조하세요.\n\n1. [smimesign](https://github.com/github/smimesign#installation)을 설치합니다.\n\n2. <span class=\"platform-mac\">터미널</span><span class=\"platform-linux\">터미널</span><span class=\"platform-windows\">Git Bash</span>를 엽니다.\n\n3. S/MIME을 사용하여 커밋 및 태그에 서명하도록 Git을 구성합니다. Git 2.19 이상에서는 `git config gpg.x509.program` 및 `git config gpg.format` 명령을 사용합니다.\n   * S/MIME을 사용하여 모든 리포지토리에 서명하려면 다음을 수행합니다.\n\n     ```shell\n     git config --global gpg.x509.program smimesign\n     git config --global gpg.format x509\n     ```\n\n   * S/MIME을 사용하여 단일 리포지토리에 서명하려면 다음을 수행합니다.\n\n     ```shell\n     cd PATH-TO-REPOSITORY\n     git config --local gpg.x509.program smimesign\n     git config --local gpg.format x509\n     ```\n\n     Git 2.18 이하 버전에서는 `git config gpg.program` 명령을 사용합니다.\n\n   * S/MIME을 사용하여 모든 리포지토리에 서명하려면 다음을 수행합니다.\n\n     ```shell\n     git config --global gpg.program smimesign\n     ```\n\n   * S/MIME을 사용하여 단일 리포지토리에 서명하려면 다음을 수행합니다.\n\n     ```shell\n     cd  PATH-TO-REPOSITORY\n     git config --local gpg.program smimesign\n     ```\n\n     커밋한 사람 ID와 일치하는 X.509 키를 사용하는 경우 커밋 및 태그에 서명을 시작할 수 있습니다.\n\n4. 커밋한 사람 ID와 일치하는 X.509 키를 사용하지 않는 경우 `smimesign --list-keys` 명령을 사용하여 인증서와 프라이빗 키가 모두 있는 X.509 키를 나열합니다.\n\n   ```shell\n   smimesign --list-keys\n   ```\n\n5. X.509 키 목록에서 사용하려는 X.509 키의 인증서 ID를 복사합니다. 이 예제에서 인증서 ID는 `0ff455a2708394633e4bb2f88002e3cd80cbd76f`입니다.\n\n   ```shell\n   $ smimesign --list-keys\n                ID: 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n               S/N: a2dfa7e8c9c4d1616f1009c988bb70f\n         Algorithm: SHA256-RSA\n          Validity: 2017-11-22 00:00:00 +0000 UTC - 2020-11-22 12:00:00 +0000 UTC\n            Issuer: CN=DigiCert SHA2 Assured ID CA,OU=www.digicert.com,O=DigiCert Inc,C=US\n           Subject: CN=Octocat,O=GitHub\\, Inc.,L=San Francisco,ST=California,C=US\n            Emails: octocat@github.com\n   ```\n\n6. Git에서 X.509 서명 키를 설정하려면 아래 텍스트를 붙여넣고 이전에 복사한 인증서 ID를 대체합니다.\n   * X.509 키를 사용하여 모든 리포지토리에 서명하려면 다음을 수행합니다.\n\n     ```shell\n     git config --global user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n     ```\n\n   * X.509 키를 사용하여 단일 리포지토리에 서명하려면 다음을 수행합니다.\n\n     ```shell\n     cd  PATH-TO-REPOSITORY\n     git config --local user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n     ```\n\n</div>\n\n<div class=\"ghd-tool mac\">\n\n## Git에 X.509 키에 대해 알리기\n\n[smimesign](https://github.com/github/smimesign)을 사용하여 S/MIME를 통해 커밋 및 태그에 서명할 수 있습니다.\n\n> \\[!NOTE]\n> S/MIME 서명 확인은 Git 2.19 이상에서 사용할 수 있습니다. Git 버전을 업데이트하려면 [Git](https://git-scm.com/downloads) 웹 사이트를 참조하세요.\n\n1. [smimesign](https://github.com/github/smimesign#installation)을 설치합니다.\n\n2. <span class=\"platform-mac\">터미널</span><span class=\"platform-linux\">터미널</span><span class=\"platform-windows\">Git Bash</span>를 엽니다.\n\n3. S/MIME을 사용하여 커밋 및 태그에 서명하도록 Git을 구성합니다. Git 2.19 이상에서는 `git config gpg.x509.program` 및 `git config gpg.format` 명령을 사용합니다.\n   * S/MIME을 사용하여 모든 리포지토리에 서명하려면 다음을 수행합니다.\n\n     ```shell\n     git config --global gpg.x509.program smimesign\n     git config --global gpg.format x509\n     ```\n\n   * S/MIME을 사용하여 단일 리포지토리에 서명하려면 다음을 수행합니다.\n\n     ```shell\n     cd PATH-TO-REPOSITORY\n     git config --local gpg.x509.program smimesign\n     git config --local gpg.format x509\n     ```\n\n     Git 2.18 이하 버전에서는 `git config gpg.program` 명령을 사용합니다.\n\n   * S/MIME을 사용하여 모든 리포지토리에 서명하려면 다음을 수행합니다.\n\n     ```shell\n     git config --global gpg.program smimesign\n     ```\n\n   * S/MIME을 사용하여 단일 리포지토리에 서명하려면 다음을 수행합니다.\n\n     ```shell\n     cd  PATH-TO-REPOSITORY\n     git config --local gpg.program smimesign\n     ```\n\n     커밋한 사람 ID와 일치하는 X.509 키를 사용하는 경우 커밋 및 태그에 서명을 시작할 수 있습니다.\n\n4. 커밋한 사람 ID와 일치하는 X.509 키를 사용하지 않는 경우 `smimesign --list-keys` 명령을 사용하여 인증서와 프라이빗 키가 모두 있는 X.509 키를 나열합니다.\n\n   ```shell\n   smimesign --list-keys\n   ```\n\n5. X.509 키 목록에서 사용하려는 X.509 키의 인증서 ID를 복사합니다. 이 예제에서 인증서 ID는 `0ff455a2708394633e4bb2f88002e3cd80cbd76f`입니다.\n\n   ```shell\n   $ smimesign --list-keys\n                ID: 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n               S/N: a2dfa7e8c9c4d1616f1009c988bb70f\n         Algorithm: SHA256-RSA\n          Validity: 2017-11-22 00:00:00 +0000 UTC - 2020-11-22 12:00:00 +0000 UTC\n            Issuer: CN=DigiCert SHA2 Assured ID CA,OU=www.digicert.com,O=DigiCert Inc,C=US\n           Subject: CN=Octocat,O=GitHub\\, Inc.,L=San Francisco,ST=California,C=US\n            Emails: octocat@github.com\n   ```\n\n6. Git에서 X.509 서명 키를 설정하려면 아래 텍스트를 붙여넣고 이전에 복사한 인증서 ID를 대체합니다.\n   * X.509 키를 사용하여 모든 리포지토리에 서명하려면 다음을 수행합니다.\n\n     ```shell\n     git config --global user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n     ```\n\n   * X.509 키를 사용하여 단일 리포지토리에 서명하려면 다음을 수행합니다.\n\n     ```shell\n     cd  PATH-TO-REPOSITORY\n     git config --local user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f\n     ```\n\n</div>\n\n## 추가 참고 자료\n\n* [GitHub 계정에 새 SSH 키 추가](/ko/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account).\n* [커밋 서명](/ko/authentication/managing-commit-signature-verification/signing-commits)\n* [태그 서명](/ko/authentication/managing-commit-signature-verification/signing-tags)"}