Andreas Bruns

Softwareentwicklung für Oldenburg und Bremen

SSH-Zugriff auf Server mit Public-Key-Authentifizierung

Wenn man erweiterten Zugriff auf Server bekommt und dadurch Befehle in einem Terminal ausführen kann, dann wird das meistens über Secure Shell (SSH) realisiert. Dabei erfolgt standardmäßig die Authentifizierung mit Benutzername und Passwort. Das ist zwar eine einfache Methode, allerdings geht es bequemer und sicherer mit Public-Key-Authentifizierung.

Das bedeutet dann konkret, dass wir folgenden Befehl nicht mehr eingeben brauchen:

ssh mein-benutzer@11.22.33.44 
mein-benutzer@11.22.33.44's password:mein-passwort 

Und wir stattdessen nur mit der IP-Adresse (ohne Benutzername und Passwort) auskommen:

ssh 11.22.33.44 

Diese Methode ist nicht nur bequemer und sicherer (Why is SSH key authentication better than password authentication?), sondern wird auch für die automatisierte Ausführung von Skripten benötigt (z.B. für Continuous Delivery).

In meinem Beipiel verwende ich für jeden Server ein individuelles Schlüsselpaar und passe die SSH-Konfiguration so an, dass die passende Schlüssel-Datei ausgewählt wird:

  1. Sicherung einer evtl. vorhandenen SSH-Konfiguration

    cp ~/.ssh/id_rsa ~/.ssh/id_rsa-sicherung
    cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub-sicherung
    cp ~/.ssh/config ~/.ssh/config-sicherung
    
  2. Schlüsselpaar erzeugen

    cd .ssh
    ssh-keygen -t rsa -b 4096 -f meine-webseite-de_rsa
    

    Dadurch wird der private Schlüssel in der Datei meine-webseite-de_rsa und der öffentliche Schlüssel in der Datei meine-webseite-de_rsa.pub abgelegt. Die Rechte der Dateien werden bereits so vergeben, dass der private Schlüssel geschützt vor anderen Benutzern ist und der öffentliche Schlüssel für jeden lesbar ist. Bei der Erzeugung der Schlüssel verzichte ich auf die optionale Verwendung eines Passworts, damit ich die Schlüssel für Skripte ohne manuelle Eingaben nutzen kann.

  3. Öffentlichen Schlüssel auf Server kopieren

    Der öffentliche Schlüssel wird mit dem Programm ssh-copy-i auf den Server kopiert. Auf einem Mac kann man das Programm mit Homebrew installieren: brew install ssh-copy-i

    ssh-copy-id -i ~/.ssh/meine-webseite-de_rsa.pub mein-user@meine-webseite.de
    
  4. Auf den Server anmelden mit dem privaten Schlüssel

    ssh mein-user@meine-webseite.de -i meine-webseite-de_rsa
    
  5. Schlüssel-Datei in SSH-Konfiguration aufnehmen

    nano ~/.ssh/config
    

    In die Datei den folgenden Inhalt eintragen:

    Host meine-webseite.de
        User mein-user
        IdentityFile ~/.ssh/meine-webseite-de_rsa
        IdentitiesOnly yes
    

    Anschließend kann man sich direkt anmelden:

    ssh meine-webseite.de
    

Damit sind wir schon fertig. Und falls man tatsächlich mit Passwörtern hantieren möchte, dann könnten die Programme sshpass oder ssh-agent hilfreich sein.

Kommentare sind geschlossen.