Willkommen im Birdies Nest
Zurück zu den Schnipseln

Einen GitHub-SSH-Schlüssel erzeugen

Erstelle einen Ed25519-SSH-Schlüssel und verbinde ihn mit deinem GitHub-Konto.

Mit SSH-Schlüsseln kannst du über SSH pushen und pullen, ohne jedes Mal ein Passwort einzugeben. Unten erstellst du einen Schlüssel namens github und verbindest ihn mit deinem Konto – oder schnapp dir am Ende das fertige Skript.

Bleibt in deinem Browser – sie füllt nur die Befehle unten aus, damit du sie direkt kopieren kannst.

SSH installieren (falls es fehlt)

  1. 1

    Prüfe zuerst, ob SSH überhaupt vorhanden ist – ssh -V gibt die OpenSSH-Version aus. Erhältst du eine, springe zum nächsten Abschnitt; mach hier nur weiter, wenn „command not found“ erscheint.

    ssh -V
  2. 2

    Debian/Ubuntu: Paketliste aktualisieren und den OpenSSH-Client installieren.

    sudo apt update && sudo apt install -y openssh-client
  3. 3

    Fedora/RHEL nutzen stattdessen dnf. (macOS und Windows 10+ bringen SSH bereits mit, du kannst das überspringen.)

    sudo dnf install -y openssh-clients

Schlüssel erstellen & verbinden

  1. 1

    Beginne in deinem SSH-Ordner. Die ~ (Tilde) ist die Abkürzung für dein Home-Verzeichnis, also bedeutet ~/.ssh genau /home/<dein-benutzername>/.ssh – dort bewahrt SSH die Schlüssel auf. mkdir -p legt den Ordner an, falls er noch nicht existiert.

    mkdir -p ~/.ssh && cd ~/.ssh
  2. 2

    Liste den Ordner auf, damit du keinen vorhandenen Schlüssel überschreibst. Tauchen github und github.pub (oder id_ed25519) auf, existiert bereits ein Schlüssel mit diesem Namen.

    ls -al ~/.ssh
  3. 3

    Erzeuge einen Ed25519-Schlüssel. -C versieht ihn mit deiner GitHub-E-Mail, und -f github benennt die Dateien github (privat) und github.pub (öffentlich) direkt in ~/.ssh statt des Standardnamens id_ed25519. Lieber per Abfrage? Führe ssh-keygen -t ed25519 aus und tippe github, wenn nach „Enter file in which to save the key“ gefragt wird. Vergib eine Passphrase oder drücke Enter zum Überspringen.

    ssh-keygen -t ed25519 -C "your_email@example.com" -f github
  4. 4

    Sag SSH, dass es diesen Schlüssel für GitHub verwenden soll. Hänge einen Host-Block an ~/.ssh/config an, damit github.com über IdentityFile deinem neuen Schlüssel zugeordnet wird – dann nutzen ssh und git ihn automatisch, ganz ohne ssh-agent. Der Block unten legt ~/.ssh/config an, falls es noch nicht existiert, und IdentitiesOnly yes sorgt dafür, dass SSH nur diesen Schlüssel anbietet.

    cat >> ~/.ssh/config <<'EOF'
    
    Host github.com
      HostName github.com
      User git
      IdentityFile ~/.ssh/github
      IdentitiesOnly yes
    EOF
  5. 5

    Gib den öffentlichen Schlüssel aus und kopiere die ganze Zeile, die mit ssh-ed25519 beginnt – ohne zusätzliche Leerzeichen oder Zeilenumbrüche. (macOS: pbcopy < ~/.ssh/github.pub. Linux: xclip -sel clip < ~/.ssh/github.pub.)

    cat ~/.ssh/github.pub
  6. 6

    Öffne auf GitHub dein Konto → Settings → SSH and GPG keys → New SSH key. Vergib einen Titel (z. B. den Namen deines Rechners), füge den Schlüssel in das Feld „Key“ ein und klicke auf Add SSH key.

  7. 7

    Teste die Verbindung – du solltest „Hi <dein-benutzername>! You've successfully authenticated…“ sehen. Beim ersten Mal tippe yes, um GitHubs Host zu vertrauen.

    ssh -T git@github.com
  8. 8

    Lieber in einem Rutsch? Speichere den Block unten als github-key-generation.sh, ändere die E-Mail und führe dann bash github-key-generation.sh aus. Es erledigt die Schritte 1–5 und gibt den öffentlichen Schlüssel aus, den du in Schritt 6 einfügst.

    #!/usr/bin/env bash
    # github-key-generation.sh — create an Ed25519 key named "github" and point GitHub at it.
    set -euo pipefail
    
    EMAIL="your_email@example.com"   # change to your GitHub email
    KEY="$HOME/.ssh/github"
    
    mkdir -p "$HOME/.ssh"
    ssh-keygen -t ed25519 -C "$EMAIL" -f "$KEY"
    
    # Point github.com at the new key (only if it is not already configured).
    if ! grep -q "^Host github.com$" "$HOME/.ssh/config" 2>/dev/null; then
      cat >> "$HOME/.ssh/config" <<EOF
    
    Host github.com
      HostName github.com
      User git
      IdentityFile $KEY
      IdentitiesOnly yes
    EOF
    fi
    
    echo
    echo "Public key — paste this into GitHub → Settings → SSH and GPG keys → New SSH key:"
    cat "$KEY.pub"