Von Gast (nicht überprüft) , 29 April 2026

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