Подпись коммитов git ключом ssh
Подпись коммитов git ключом ssh.
Содержание
1 Общая информация
- В git можно производить подпись коммитов с помощью ssh-ключа.
2 Подпись коммитов git ключом ssh
2.1 Ключ для подписи
- Создадим ключ для подписи коммитов:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519-git -C "your_email@example.com"
- Добавляем ключ в агент (см. Агенты для хранения ключей):
ssh-add ~/.ssh/id_ed25519-git
- Добавьте ключ в учётную запись github (см. github: утилиты командной строки):
gh ssh-key add ~/.ssh/id_ed25519-git.pub --title your_email@example.com gh ssh-key add ~/.ssh/id_ed25519-git.pub --title your_email@example.com --type signing
2.2 Настройка подписи ключом ssh
Настроим подписывание в git:
git config --global commit.gpgsign true git config --global gpg.format ssh
Получим список ключей (используя агент хранения ключей, Агенты для хранения ключей):
ssh-add -L
Указываем ключ:
git config --global user.signingkey "ssh-ed25519 <key_id>"
Для проверки работы подписывания запустите команду в любом из ваших репозиториев:
git commit --allow-empty --message="Testing SSH signing"
2.3 Доверенные подписи
Проверим созданный коммит:
git show --show-signature
Git не видит подписи.
Необходимо внести ключ в список доверенных подписантов.
Сконфигурируем git:
git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers touch ~/.ssh/allowed_signers
Формат этого файла:
<email>[,<email>...] <key_type> <public_key>
Добавляем ключ в файл:
echo "<user_email> ssh-ed25519 <key_id>" > ~/.ssh/authorized_signatures
3 Итоговый ~/config/git/config
- В файле
~/config/git/config
должно будет появиться следующее:[gpg] format = ssh [gpg "ssh"] allowedSignersFile = ~/.ssh/allowed_signers [user] signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGXySeykoPLO4ChvQuGVrveXJ+m0rxQEJFl1XQ0OKF2Y