Der Fehlergit@github.com: Berechtigung verweigert (öffentlicher Schlüssel). Schwerwiegend: Aus dem Remote-Repositorykonnte nicht gelesen werden bedeutet, dass GitHub Ihre SSH-Authentifizierung abgelehnt hat. Dies ist ein häufiger Blocker beim Einrichten von Git. Hier erfahren Sie, wie Sie das Problem vollständig beheben können.
📋 Table of Contents
- Was dieser Fehler bedeutet
- Schritt 1: Auf vorhandene SSH-Schlüssel prüfen
- Schritt 2: Generieren Sie einen neuen SSH-Schlüssel
- Schritt 3: Fügen Sie den Schlüssel zum SSH-Agenten hinzu
- Schritt 4: Fügen Sie den öffentlichen Schlüssel zu GitHub hinzu
- Schritt 5: Testen Sie die Verbindung
- Häufige Ursache 1: Verwendung von HTTPS Remote anstelle von SSH
- Häufige Ursache 2: Schlüssel nicht in Agent geladen
- Häufige Ursache 3: Falsche Schlüsselberechtigungen
- Debuggen mit ausführlicher Ausgabe
- Häufig gestellte Fragen
- Fazit
Was dieser Fehler bedeutet
GitHub verwendet SSH-Schlüssel, um Sie für Push/Pull über SSH zu authentifizieren. „Berechtigung verweigert (öffentlicher Schlüssel)“ bedeutet, dass GitHub Ihre Identität nicht überprüfen konnte – normalerweise, weil Sie keinen SSH-Schlüssel haben, der Schlüssel nicht zu Ihrem GitHub-Konto hinzugefügt wurde oder der SSH-Agent ihn nicht verwendet.
Schritt 1: Auf vorhandene SSH-Schlüssel prüfen
ls -la ~/.ssh
# Look for: id_ed25519.pub or id_rsa.pub
# If you see .pub files, you may already have a key — skip to Step 3
Schritt 2: Generieren Sie einen neuen SSH-Schlüssel
# Ed25519 is the modern recommended algorithm
ssh-keygen -t ed25519 -C "your_email@example.com"
# Press Enter to accept default location (~/.ssh/id_ed25519)
# Optionally set a passphrase for extra security
# For older systems without Ed25519 support:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Schritt 3: Fügen Sie den Schlüssel zum SSH-Agenten hinzu
# Start the ssh-agent
eval "$(ssh-agent -s)"
# Agent pid 12345
# Add your key
ssh-add ~/.ssh/id_ed25519
# On macOS, store passphrase in keychain
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
Schritt 4: Fügen Sie den öffentlichen Schlüssel zu GitHub hinzu
# Copy your PUBLIC key (.pub — never share the private key!)
cat ~/.ssh/id_ed25519.pub
# macOS: copy directly to clipboard
pbcopy < ~/.ssh/id_ed25519.pub
# Linux:
xclip -sel clip < ~/.ssh/id_ed25519.pub
Dann in GitHub:Einstellungen, dann SSH- und GPG-Schlüssel, dann Neuer SSH-Schlüssel. Fügen Sie den öffentlichen Schlüssel ein und speichern Sie ihn.
Schritt 5: Testen Sie die Verbindung
ssh -T git@github.com
# Success looks like:
# Hi username! You've successfully authenticated,
# but GitHub does not provide shell access.
# The "does not provide shell access" message is NORMAL and means it worked!
Häufige Ursache 1: Verwendung von HTTPS Remote anstelle von SSH
# Check your remote URL
git remote -v
# origin https://github.com/user/repo.git ← HTTPS, not SSH!
# Switch to SSH
git remote set-url origin git@github.com:user/repo.git
# Verify
git remote -v
# origin git@github.com:user/repo.git (fetch)
Häufige Ursache 2: Schlüssel nicht in Agent geladen
# List keys currently in the agent
ssh-add -l
# "The agent has no identities" means no key is loaded
# Add your key
ssh-add ~/.ssh/id_ed25519
# Make it persistent — add to ~/.ssh/config:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519
AddKeysToAgent yes
UseKeychain yes # macOS only
Häufige Ursache 3: Falsche Schlüsselberechtigungen
# SSH refuses keys with loose permissions
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519 # private key
chmod 644 ~/.ssh/id_ed25519.pub # public key
chmod 600 ~/.ssh/config
Debuggen mit ausführlicher Ausgabe
# See exactly what SSH is doing
ssh -vT git@github.com
# Look for lines like:
# "Offering public key: ~/.ssh/id_ed25519" ← key is being tried
# "Authentications that can continue: publickey" ← GitHub wants a key
# If your key isn't offered, it's not in the agent or config
Häufig gestellte Fragen
F: Sollte ich Ed25519 oder RSA verwenden?
A: Ed25519 – es ist sicherer und schneller als RSA. Verwenden Sie RSA (4096-Bit) nur für ältere Systeme, die Ed25519 nicht unterstützen.
F: Was ist der Unterschied zwischen der .pub-Datei und der anderen?
A: id_ed25519.pub ist Ihr PUBLIC-Schlüssel – Sie können ihn sicher teilen und zu GitHub hinzufügen. id_ed25519 (keine Erweiterung) ist Ihr PRIVATER Schlüssel – geben Sie ihn niemals weiter, übertragen Sie ihn niemals.
F: Es hat früher funktioniert, schlägt aber plötzlich fehl. Warum?
A: Der SSH-Agent verliert nach einem Neustart häufig Schlüssel. Fügen SieAddKeysToAgent yes to ~/.ssh/confighinzu , oder führen Siessh-adderneut aus . Unter macOSUseKeychain yes macht es hartnäckig.
F: Kann ich denselben Schlüssel auf mehreren Computern verwenden?
A: Das ist möglich, aber die beste Vorgehensweise ist ein separater Schlüssel pro Gerät. Wenn eine Maschine kompromittiert wird, entziehen Sie auf diese Weise nur diesen Schlüssel von GitHub, ohne dass dies Auswirkungen auf andere hat.
F: HTTPS oder SSH für GitHub?
A: SSH vermeidet die wiederholte Eingabe von Anmeldeinformationen und ist nach der Einrichtung praktisch. HTTPS mit einem persönlichen Zugriffstoken ist einfacher für die einmalige Verwendung oder eingeschränkte Netzwerke, die SSH blockieren.
Fazit
„Berechtigung verweigert (publickey)“ bedeutet, dass GitHub Ihren SSH-Schlüssel nicht authentifizieren konnte. Die Fixsequenz:Generieren Sie einen Schlüssel mitssh-keygen -t ed25519, fügen Sie es mitssh-addzum Agenten hinzu , fügen Sie den .pub-Schlüssel zu GitHub hinzu und testen Sie mitssh -T git@github.com. Wenn es immer noch fehlschlägt, überprüfen Sie, ob Ihre Fernbedienung SSH (nicht HTTPS) verwendet und ob die Schlüsselberechtigungen korrekt sind. Das ausführliche Flagssh -vT zeigt genau an, wo die Authentifizierung fehlschlägt.
🔗 Share this article
✍️ Leave a Comment