TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.75K subscribers
Post #2620 2.93K
День 2170. #ЗаметкиНаПолях
Подписываем Коммиты в Git SSH-Ключами в Windows
Подписание коммитов в Git — это способ проверки подлинности и целостности коммитов. Это гарантирует, что коммиты действительно сделаны вами и не были подделаны. В Windows легко настроить SSH-Agent для подписи.

Сначала установим SSH в Windows. Откройте окно PowerShell от имени администратора и выполните следующую команду:
Add-WindowsCapability -Online -Name OpenSSH.Client

Можно проверить статус так:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Client*'

Теперь создадим пару ключей SSH (для PowerShell 7.1+):
$passphrase = Read-Host -Prompt "Enter passphrase" -AsSecureString
$KeyName = "git"
ssh-keygen -t ed25519 -C $KeyName -N (ConvertFrom-SecureString -AsPlainText $passphrase)

Чтобы не вводить парольную фразу каждый раз при использовании ключа, можно добавить её в SSH Agent. Запустим сервис SSH Agent и настроим его на автоматический запуск:
Set-Service -Name ssh-agent -StartupType Automatic
Start-Service ssh-agent

Теперь добавим ключ в SSH Agent:
ssh-add $env:USERPROFILE\.ssh\id_ed25519

Можно проверить, что ключ добавлен:
ssh-add -L

Должен отобразиться публичный ключ.

Вы можете удалить приватный ключ, если хотите, так как теперь он сохраняется в SSH Agent между сеансами и перезагрузками.

Теперь, если нужно, установите Git:
winget install --id Git.Git –exact

Наконец, настроим Git для использования SSH-ключа для подписи коммитов:
# Используем SSH-ключ для подписей
git config --global user.signingkey (Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub)
git config --global gpg.format ssh
git config --global gpg.ssh.program (Get-Command ssh-keygen.exe).Source
git config --global core.sshCommand (Get-Command ssh.exe).Source

# Настраиваем подписывать коммиты и теги по умолчанию
git config --global commit.gpgsign true
git config --global tag.gpgsign true


Последний шаг — зарегистрировать SSH-ключ в провайдере Git. Вы можете найти открытый ключ в папке .ssh в каталоге вашего профиля пользователя. Скопируйте содержимое файла id_ed25519.pub и добавьте его у провайдера Git:
GitHub: https://github.com/settings/ssh/new
GitLab: https://gitlab.com/-/user_settings/ssh_keys

Для GitHub можно также использовать GitHub CLI:
gh ssh-key add $env:USERPROFILE\.ssh\id_ed25519 --title git --type signing


Проверяем подпись коммита:
git commit --allow-empty --message="Testing SSH signing"

На сайте GitHub вы должны увидеть значок "Verified" рядом с сообщением коммита.

Можно проверить подпись локально. Сначала добавим SSH-ключ в доверенных подписантов:
git config --global gpg.ssh.allowedSignersFile $env:USERPROFILE/.ssh/allowed_signers

$email = (git config user.email)
$key = (Get-Content $env:USERPROFILE/.ssh/id_ed25519.pub)
$signer = "$email $key"
echo $signer | Out-File $env:USERPROFILE/.ssh/allowed_signers -Append

Теперь можно проверить подпись коммита:
git show --show-signature


Эта настройка позволяет проверить ваш коммит, используя ваш SSH-ключ. Если вы хотите проверять коммиты, подписанные другими людьми, нужно добавить их ключи в файл allowed_signers. Для GitHub вы можете запросить ключи SSH, используя API GitHub:
gh api /users/meziantou/ssh_signing_keys

Затем вы можете добавить ключ в файл allowed_signers и выполнить предыдущую команду для проверки подписи.

Источник: https://www.meziantou.net/signing-commits-in-git-using-ssh-keys-on-windows.htm
  • 👍 22
More from @netdeveloperdiary
  1. Oct 5, 2026День 2805. #ЧтоНовенького #NET11 Аргументы в Выражениях Коллекций в C#15 В C#15 реализован…
  2. Oct 4, 2026День 2804. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  3. Oct 3, 2026Post #3360
  4. Oct 3, 2026День 2803. #Оффтоп Чем Заняться, Пока Работают Агенты? У VS Code Есть Ответ Сейчас большую…
  5. Oct 2, 2026День 2802. #Карьера #Юмор Секреты Программирования, Известные Только Легендам Ещё один пос…
  6. Oct 1, 2026Post #3357
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →