SSH Schlüssel erstellen

Antworten
localhorst
Beiträge: 571
Registriert: 17.12.2012, 20:19

SSH Schlüssel erstellen

Beitrag von localhorst »

Windows
  1. Lade zunächst den "PuTTY Key Generator" (PuTTYgen) herunter: http://the.earth.li/~sgtatham/putty/lat ... ttygen.exe
  2. Nach dem Öffnen des Programms achte darauf, dass unter der GroupBox "Parameters" der Schlüsseltyp "SSH-2RSA" ausgewählt ist. Die Schlüsselstärke sollte mindestens "2048" Bits betragen.
  3. Klicke auf "Generate" und bewege die Maus innerhalb der "Key"-Groupbox solange, bis der Schlüssel generiert wurde.
  4. Unter "Key comment" gibst du bitte einen aussagekräftigen Kommentar an (z.B. deinen Namen oder die Aufgabe für den du ihn verwenden willst).
  5. Ganz wichtig: Vergebe ein Passwort unter "Key passphrase" für deinen SSH Schlüssel und wiederhole es im Feld "Confirm passphrase". Damit ist für die Verwendung deines SSH Schlüssels immer eine Passwort-Eingabe notwendig. Sollte jemand den Schlüssel in die Finger bekommen, so kann er damit nichts anfangen. Verwende also ein sicheres Passwort!
  6. Speichere nun den öffentlichen Schlüssel ab, indem du auf "Save public key" klickst. Diesen Schlüssel musst du auf allen SSH-Servern einbinden, auf die du Zugriff haben willst.
  7. Speichere nun deinen privaten Schlüssel ab, indem du auf "Save private key" klickst.
  8. Der erstellte private Schlüssel ist nur mit dem Programm "Pageant" (http://the.earth.li/~sgtatham/putty/lat ... ageant.exe) unter Windows lesbar. Möchtest du diesen auch unter Linux verwenden, so klicke im Menü "Conversions" auf "Export OpenSSH key.".
  9. Lade nun das Programm "Pageant" heruner: http://the.earth.li/~sgtatham/putty/lat ... ageant.exe
  10. Erstelle eine Verknüpfung zu der Programm-EXE im "Autostart"-Ordner deines Startmenüs, damit es beim Laden von Windows automatisch ausgeführt wird.
  11. Starte das Programm. Klicke auf "Add Key" und füge deinen privaten SSH Schlüssel hinzu.
  12. Solange der Pageant ausgeführt wird, wird bei jedem Aufbau von SSH-Verbindungen versucht einen deiner hinterlegten Schlüssel zur Authentifizierung am Server zu verwenden.
Linux
  1. Zum Erzeugen eines Schlüssel-Paares mit einer Länge von 2048 Bits, gebe folgenden Befehl ein:

    Code: Alles auswählen

    ssh-keygen -t ed25519 -C "Kommentar"
    Soll der Schlüssel länger sein, dann erweitere o.g. Befehl um den Parameter "-b" gefolgt von deiner gewünschten Schlüssellänge.
    Der "Kommentar" sollte aussagekräftig sein (z.B. deinen Namen oder die Aufgabe für den du ihn verwenden willst.).
  2. Als nächstes wirst du nach dem Speicherort gefragt für die Schlüssel gefragt. In Klammern wird der Standard-Speicherort angezeigt. Bist du damit zufrieden, drücke einfach Enter. Ansonsten gebe den Speicherort ein.
  3. Ganz wichtig: Vergebe bei der Aufforderung "Enter passphrase" unbedingt ein Passwort, drücke Enter und bestätige es anschließend nochmals. Damit ist für die Verwendung deines SSH Schlüssels immer eine Passwort-Eingabe notwendig. Sollte jemand den Schlüssel in die Finger bekommen, so kann er damit nichts anfangen. Verwende also ein sicheres Passwort!
  4. Hier noch ein SSH-Agent Skript, welches du in die ".bashrc" eintragen kannst. Damit brauchst du nur einmal pro PC-Start dein Kennwort für deinen SSH-Schlüssel eingeben:

    Code: Alles auswählen

    # Note: ~/.ssh/environment should not be used, as it
    #       already has a different purpose in SSH.
    
    env=~/.ssh/agent.env
    
    # Note: Don't bother checking SSH_AGENT_PID. It's not used
    #       by SSH itself, and it might even be incorrect
    #       (for example, when using agent-forwarding over SSH).
    
    agent_is_running() {
        if [ "$SSH_AUTH_SOCK" ]; then
            # ssh-add returns:
            #   0 = agent running, has keys
            #   1 = agent running, no keys
            #   2 = agent not running
            ssh-add -l >/dev/null 2>&1 || [ $? -eq 1 ]
        else
            false
        fi
    }
    
    agent_has_keys() {
        ssh-add -l >/dev/null 2>&1
    }
    
    agent_load_env() {
        . "$env" >/dev/null
    }
    
    agent_start() {
        (umask 077; ssh-agent >"$env")
        . "$env" >/dev/null
    }
    
    if ! agent_is_running; then
        agent_load_env
    fi
    
    if ! agent_is_running; then
        agent_start
        ssh-add
    elif ! agent_has_keys; then
        ssh-add
    fi
    
    unset env
    
Antworten