Was Sie erreichen werden
Sie werden Git so konfigurieren, dass Commits und Tags mit Ihrem bestehenden SSH-Schlussel signiert werden.
Warum SSH-Signierung
SSH-Signierung wurde in Git 2.34 eingefuhrt.
Schritt 1: Git-Version bestatigen
git --version
Schritt 2: bestatigen, dass ein SSH-Schlussel existiert
ls -la ~/.ssh/id_ed25519*
ssh-keygen -t ed25519 -C "[email protected]"
Schritt 3: Git fur SSH-Signierung konfigurieren
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgsign true
git config --global tag.gpgsign true
Schritt 4: testen
cd /tmp/sign-test
git init
echo "test" > file.txt
git add . && git commit -m "Test signed commit"
git log --show-signature -1
Schritt 5: allowed signers konfigurieren
mkdir -p ~/.config/git
echo "[email protected] $(cat ~/.ssh/id_ed25519.pub)" \
>> ~/.config/git/allowed_signers
git config --global gpg.ssh.allowedSignersFile ~/.config/git/allowed_signers
Schritt 6: einen Commit verifizieren
git verify-commit HEAD
git log --show-signature
git verify-tag v1.0.0
Schritt 7: Schlussel zum Git-Host hochladen
Fur GitHub: Settings → SSH and GPG keys → New SSH key.
Schritt 8: altere Commits signieren
git commit --amend --no-edit -S
git rebase -i <base> --exec 'git commit --amend --no-edit -S'
Schritt 9: signierte Commits durchsetzen
gh api -X PUT repos/owner/repo/branches/main/protection \
-F required_signatures.enabled=true
Schritt 10: mehrere Maschinen handhaben
- Per-Maschinen-Schlussel, alle zum Host hochgeladen.
- Ein Master-Schlussel kopiert.
- Hardware-Schlussel (YubiKey).
Hardware-gestutzte Signierung
ssh-keygen -t ed25519-sk -O resident -C "[email protected]"
Schritt 11: Tags signieren
git tag -s v1.0.0 -m "Release 1.0.0"
git tag -v v1.0.0