man/src/GIT-SSH-sign.md
2025-01-20 22:26:22 +03:00

2.3 KiB

SSH подпись

Как мы знаем в GIT можно указать любое имя пользователя и почтовый адрес.

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

Подписывать коммиты будем тем же самым ключом SSH который мы использовали ранее для работы с удаленными репозиториями.

Чтобы верифицировать подписи локально, нужно создать файл с доверенными ключами...

echo "$(git config --get user.name) $(cat ~/.ssh/id_rsa.pub)" >> ~/.ssh/allowed_signers

Добавляем соответствующие настройки в GIT:

git config --global gpg.format ssh                                        # Включаем SSH для подписи
git config --global user.signingkey "~/.ssh/id_rsa.pub"                   # Добавляем открытый ключ
git config --global gpg.ssh.allowedSignersFile "~/.ssh/allowed_signers"   # Добавляем файл доверенных подписей
git config --global commit.gpgsign true                                   # Автоподпись для коммитов
git config --global tag.gpgsign true                                      # Автоподпись для тэгов

Таким образом мой файл .gitconfig теперь выглядит так:

[user]
	name = ARNik
	email = r.anikeev@gmail.com
	signingkey = ~/.ssh/id_rsa.pub
[color]
	ui = true
[core]
	quotepath = off	# отображение русских имен файлов
[alias]
	ll = log --oneline --graph --decorate --all
	st = status --short
	co = checkout
	br = branch
	ct = commit

	lg = log --graph --all\
	--pretty=format:'%Cred%h%Creset -%C(auto)%d %Creset%s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
[gpg]
	format = ssh
[gpg "ssh"]
	allowedSignersFile = ~/.ssh/allowed_signers
[commit]
	gpgsign = true
[tag]
	gpgsign = true