Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.

Предоставление GIT информации о ключе для подписывания

Чтобы подписать фиксации локально, необходимо сообщить Git о наличии ключа GPG, SSH или X.509, который требуется использовать.

Предоставление GIT информации о ключе GPG

Если вы используете ключ GPG, соответствующий вашему удостоверению фиксации и проверенного адреса электронной почты, связанного с вашей учетной записью в , вы можете начать подписывать фиксации и подписывать теги.

Если у вас нет ключа GPG, соответствующего вашему удостоверению автора фиксаций, необходимо связать адрес электронной почты с существующим ключом. Дополнительные сведения см. в разделе Связывание адреса электронной почты с ключом GPG.

Если у вас несколько ключей GPG, необходимо указать GIT, какой из них следует использовать.

  1. Откройте ТерминалТерминалGIT Bash.

  2. Если вы ранее настроили Git для использования другого формата ключа при подписи с --gpg-signпомощью , отмените эту конфигурацию, чтобы использовать формат openpgp по умолчанию.

    $ git config --global --unset gpg.format
    
  3. Команда gpg --list-secret-keys --keyid-format=long позволяет получить длинную форму ключей GPG, для которых у вас есть открытый и закрытый ключ. Закрытый ключ необходим для подписания фиксаций или тегов.

    Shell
    $ gpg --list-secret-keys --keyid-format=long

    Примечание. В некоторых установках GPG в Linux для просмотра списка существующих ключей может требоваться gpg2 --list-keys --keyid-format LONG. В этом случае также нужно будет настроить Git для использования gpg2, выполнив git config --global gpg.program gpg2.

  4. Из списка ключей GPG скопируйте длинную форму идентификатора ключа GPG, который вы хотите использовать. В этом примере идентификатором ключа GPG является 3AA5C34371567BD2:

    Shell
    $ 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
  5. Чтобы задать первичный ключ подписи GPG в Git, вставьте приведенный ниже текст, подставив идентификатор первичного ключа GPG, который вы хотите использовать. В этом примере идентификатором ключа GPG является 3AA5C34371567BD2:

    $ git config --global user.signingkey 3AA5C34371567BD2

    Кроме того, при задании подраздела включите суффикс !. В этом примере идентификатором подраздела GPG является 4BB6D45482678BE3:

    $ git config --global user.signingkey 4BB6D45482678BE3!
  6. При необходимости, чтобы настроить Git для подписывания всех фиксаций по умолчанию, введите следующую команду:

    $ git config --global commit.gpgsign true
    

    Дополнительные сведения см. в разделе Подписание фиксаций.

  7. Если вы не используете набор GPG, выполните следующую команду в оболочке zsh, чтобы добавить ключ GPG в файл .zshrc, если он существует, или в файл .zprofile:

    $ if [ -r ~/.zshrc ]; then echo -e '\nexport GPG_TTY=\$(tty)' >> ~/.zshrc; \
      else echo -e '\nexport GPG_TTY=\$(tty)' >> ~/.zprofile; fi

    Если вы используете оболочку bash, выполните следующую команду:

    $ if [ -r ~/.bash_profile ]; then echo -e '\nexport GPG_TTY=\$(tty)' >> ~/.bash_profile; \
      else echo -e '\nexport GPG_TTY=\$(tty)' >> ~/.profile; fi
  8. Если необходимо запрашивать ПИН-код или парольную фразу, установите pinentry-mac. Например, при использовании Homebrew:

    $ brew install pinentry-mac
    $ echo "pinentry-program $(which pinentry-mac)" >> ~/.gnupg/gpg-agent.conf
    $ killall gpg-agent

Если вы используете ключ GPG, соответствующий вашему удостоверению фиксации и проверенного адреса электронной почты, связанного с вашей учетной записью в , вы можете начать подписывать фиксации и подписывать теги.

Если у вас нет ключа GPG, соответствующего вашему удостоверению автора фиксаций, необходимо связать адрес электронной почты с существующим ключом. Дополнительные сведения см. в разделе Связывание адреса электронной почты с ключом GPG.

Если у вас несколько ключей GPG, необходимо указать GIT, какой из них следует использовать.

  1. Откройте ТерминалТерминалGIT Bash.

  2. Если вы ранее настроили Git для использования другого формата ключа при подписи с --gpg-signпомощью , отмените эту конфигурацию, чтобы использовать формат openpgp по умолчанию.

    $ git config --global --unset gpg.format
    
  3. Команда gpg --list-secret-keys --keyid-format=long позволяет получить длинную форму ключей GPG, для которых у вас есть открытый и закрытый ключ. Закрытый ключ необходим для подписания фиксаций или тегов.

    Shell
    $ gpg --list-secret-keys --keyid-format=long

    Примечание. В некоторых установках GPG в Linux для просмотра списка существующих ключей может требоваться gpg2 --list-keys --keyid-format LONG. В этом случае также нужно будет настроить Git для использования gpg2, выполнив git config --global gpg.program gpg2.

  4. Из списка ключей GPG скопируйте длинную форму идентификатора ключа GPG, который вы хотите использовать. В этом примере идентификатором ключа GPG является 3AA5C34371567BD2:

    Shell
    $ 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
  5. Чтобы задать первичный ключ подписи GPG в Git, вставьте приведенный ниже текст, подставив идентификатор первичного ключа GPG, который вы хотите использовать. В этом примере идентификатором ключа GPG является 3AA5C34371567BD2:

    $ git config --global user.signingkey 3AA5C34371567BD2

    Кроме того, при задании подраздела включите суффикс !. В этом примере идентификатором подраздела GPG является 4BB6D45482678BE3:

    $ git config --global user.signingkey 4BB6D45482678BE3!
  6. При необходимости, чтобы настроить Git для подписывания всех фиксаций по умолчанию, введите следующую команду:

    $ git config --global commit.gpgsign true
    

    Дополнительные сведения см. в разделе Подписание фиксаций.

Если вы используете ключ GPG, соответствующий вашему удостоверению фиксации и проверенного адреса электронной почты, связанного с вашей учетной записью в , вы можете начать подписывать фиксации и подписывать теги.

Если у вас нет ключа GPG, соответствующего вашему удостоверению автора фиксаций, необходимо связать адрес электронной почты с существующим ключом. Дополнительные сведения см. в разделе Связывание адреса электронной почты с ключом GPG.

Если у вас несколько ключей GPG, необходимо указать GIT, какой из них следует использовать.

  1. Откройте ТерминалТерминалGIT Bash.

  2. Если вы ранее настроили Git для использования другого формата ключа при подписи с --gpg-signпомощью , отмените эту конфигурацию, чтобы использовать формат openpgp по умолчанию.

    $ git config --global --unset gpg.format
    
  3. Команда gpg --list-secret-keys --keyid-format=long позволяет получить длинную форму ключей GPG, для которых у вас есть открытый и закрытый ключ. Закрытый ключ необходим для подписания фиксаций или тегов.

    Shell
    $ gpg --list-secret-keys --keyid-format=long

    Примечание. В некоторых установках GPG в Linux для просмотра списка существующих ключей может требоваться gpg2 --list-keys --keyid-format LONG. В этом случае также нужно будет настроить Git для использования gpg2, выполнив git config --global gpg.program gpg2.

  4. Из списка ключей GPG скопируйте длинную форму идентификатора ключа GPG, который вы хотите использовать. В этом примере идентификатором ключа GPG является 3AA5C34371567BD2:

    Shell
    $ 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
  5. Чтобы задать первичный ключ подписи GPG в Git, вставьте приведенный ниже текст, подставив идентификатор первичного ключа GPG, который вы хотите использовать. В этом примере идентификатором ключа GPG является 3AA5C34371567BD2:

    $ git config --global user.signingkey 3AA5C34371567BD2

    Кроме того, при задании подраздела включите суффикс !. В этом примере идентификатором подраздела GPG является 4BB6D45482678BE3:

    $ git config --global user.signingkey 4BB6D45482678BE3!
  6. При необходимости, чтобы настроить Git для подписывания всех фиксаций по умолчанию, введите следующую команду:

    $ git config --global commit.gpgsign true
    

    Дополнительные сведения см. в разделе Подписание фиксаций.

  7. Чтобы добавить ключ GPG в файл запуска .bashrc, выполните следующую команду:

    $ [ -f ~/.bashrc ] && echo -e '\nexport GPG_TTY=\$(tty)' >> ~/.bashrc
    

Предоставление Git информации о ключе SSH

Существующий ключ SSH можно использовать для подписывания фиксаций и тегов или создания нового ключа специально для подписывания. Дополнительные сведения см. в разделе Создание нового ключа SSH и его добавление в ssh-agent.

Примечание. Проверка подписи SSH доступна в Git 2.34 и более поздних версий. Сведения об обновлении версии Git см. на веб-сайте Git.

  1. Откройте ТерминалТерминалGIT Bash.
  2. Настройте Git, чтобы использовать SSH для подписывания фиксаций и тегов:
    $ git config --global gpg.format ssh
    
  3. Чтобы задать ключ подписывания SSH в Git, вставьте приведенный ниже текст, заменив /PATH/TO/KEY. PUB с путем к открытому ключу, который вы хотите использовать.
    $ git config --global user.signingkey /PATH/TO/.SSH/KEY.PUB
    

Предоставление Git информации о вашем ключе X.509

Вы можете использовать smimesign для подписывания фиксаций и тегов с помощью S/MIME.

Примечание. Проверка подписи S/MIME доступна в Git 2.19 и более поздних версий. Сведения об обновлении версии Git см. на веб-сайте Git.

  1. Установите smimesign.
  2. Откройте ТерминалТерминалGIT Bash.
  3. Настройте Git, чтобы использовать S/MIME для подписывания фиксаций и тегов. В Git 2.19 или более поздней версии используйте команды git config gpg.x509.program и git config gpg.format:
    • Чтобы использовать S/MIME для подписывания во всех репозиториях, воспользуйтесь следующим кодом:
      $ git config --global gpg.x509.program smimesign
      $ git config --global gpg.format x509
    • Чтобы использовать S/MIME для подписывания в одном репозитории, воспользуйтесь следующим кодом:
      $ cd PATH-TO-REPOSITORY
      $ git config --local gpg.x509.program smimesign
      $ git config --local gpg.format x509
      В Git 2.18 или более ранней версии используйте команду git config gpg.program:
    • Чтобы использовать S/MIME для подписывания во всех репозиториях, воспользуйтесь следующим кодом:
      $ git config --global gpg.program smimesign
    • Чтобы использовать S/MIME для подписывания в одном репозитории, воспользуйтесь следующим кодом:
      $ cd  PATH-TO-REPOSITORY
      $ git config --local gpg.program smimesign
      Если вы используете ключ X.509, соответствующий вашему удостоверению вносителя фиксаций, можно начать подписывание фиксаций и тегов.
  4. Если вы не используете ключ X.509, соответствующий вашему удостоверению вносителя фиксаций, выведите список ключей X.509, для которых у вас есть сертификат и закрытый ключ, с помощью команды smimesign --list-keys.
    $ smimesign --list-keys
  5. В списке ключей X.509 скопируйте идентификатор сертификата ключа X.509, который вы хотите использовать. В этом примере идентификатором сертификата является 0ff455a2708394633e4bb2f88002e3cd80cbd76f:
    $ smimesign --list-keys
                 ID: 0ff455a2708394633e4bb2f88002e3cd80cbd76f
                S/N: a2dfa7e8c9c4d1616f1009c988bb70f
          Algorithm: SHA256-RSA
           Validity: 2017-11-22 00:00:00 +0000 UTC - 2020-11-22 12:00:00 +0000 UTC
             Issuer: CN=DigiCert SHA2 Assured ID CA,OU=www.digicert.com,O=DigiCert Inc,C=US
            Subject: CN=Octocat,O=GitHub\, Inc.,L=San Francisco,ST=California,C=US
             Emails: octocat@github.com
  6. Чтобы задать ключ подписывания X.509 в Git, вставьте приведенный ниже текст, подставив скопированный ранее идентификатор сертификата.
    • Чтобы использовать ключ X.509 для подписывания во всех репозиториях, воспользуйтесь следующим кодом:
      $ git config --global user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f
    • Чтобы использовать ключ X.509 для подписывания в одном репозитории, воспользуйтесь следующим кодом:
      $ cd  PATH-TO-REPOSITORY
      $ git config --local user.signingkey 0ff455a2708394633e4bb2f88002e3cd80cbd76f

Дополнительные материалы