Подпись коммитов git ключом ssh

Подпись коммитов git ключом ssh.

Содержание

1 Общая информация

  • В git можно производить подпись коммитов с помощью ssh-ключа.

2 Подпись коммитов git ключом ssh

2.1 Ключ для подписи

  • Создадим ключ для подписи коммитов:
    1ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519-git -C "your_email@example.com"
    
  • Добавляем ключ в агент (см. Агенты для хранения ключей):
    1ssh-add ~/.ssh/id_ed25519-git
    
  • Добавьте ключ в учётную запись github (см. github: утилиты командной строки):
    1gh ssh-key add ~/.ssh/id_ed25519-git.pub --title your_email@example.com
    2gh ssh-key add ~/.ssh/id_ed25519-git.pub --title your_email@example.com --type signing
    

2.2 Настройка подписи ключом ssh

  • Настроим подписывание в git:

    1git config --global commit.gpgsign true
    2git config --global gpg.format ssh
    
  • Получим список ключей (используя агент хранения ключей, Агенты для хранения ключей):

    1ssh-add -L
    
  • Указываем ключ:

    1git config --global user.signingkey "ssh-ed25519 <key_id>"
    
  • Для проверки работы подписывания запустите команду в любом из ваших репозиториев:

    1git commit --allow-empty --message="Testing SSH signing"
    

2.3 Доверенные подписи

  • Проверим созданный коммит:

    1git show --show-signature
    
  • Git не видит подписи.

  • Необходимо внести ключ в список доверенных подписантов.

  • Сконфигурируем git:

    1git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers
    2touch ~/.ssh/allowed_signers
    
  • Формат этого файла:

    1<email>[,<email>...] <key_type> <public_key>
    
  • Добавляем ключ в файл:

    1echo "<user_email> ssh-ed25519 <key_id>" > ~/.ssh/authorized_signatures
    

3 Итоговый ~/config/git/config

  • В файле ~/config/git/config должно будет появиться следующее:
    1[gpg]
    2    format = ssh
    3[gpg "ssh"]
    4    allowedSignersFile = ~/.ssh/allowed_signers
    5[user]
    6    signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGXySeykoPLO4ChvQuGVrveXJ+m0rxQEJFl1XQ0OKF2Y
    


Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие