HowTo: Passwortlosen Zugang für SSH einrichten

    SSH ist ein Dienst zum Fernsteuern von Rechnern über unsichere Netze (Internet).

    Um nicht ständig Passworte eingeben zu müssen, kann man für SSH einen Zugang über öffentliche Schlüssel (PublicKey-Authorization) einrichten. Werden diese mit keiner Passphrase versehen, kann man sich auf den Servern ohne die Eingabe eines Passworts anmelden, wenn man über den privaten Schlüssel verfügt.

    SSH verwendet dabei asymmetrische Schlüssel. Sie bestehen aus zwei Dateien, z.B. id_rsa und id_rsa.pub). Der private Schlüssel verbleibt auf dem Client (Rechner, vor dem man sitzt), während der öffentliche Schlüssel (id_rsa.pub) auf den Server kopiert werden muss; er bildet praktisch gesehen das Schloss.

    Sicherheitsaspekte

    Die wichtigsten Überlegungen zum Thema Sicherheit:

    AuthentifizierungsmethodeSicherheitsaspekte
    PasswordHängt extrem stark von der Wahl des Passworts durch den Anwender ab. Da Anwender aus Bequemlichkeitsgründen lieber einfache Passworte verwenden, sollte diese Methode nur innerhalb begrenzter lokaler Netze verwendet werden und NIE über Internetverbindungen hinweg.
    PublicKey ohne PassphraseIst grundsätzlich sicher, so lange der private Schlüssel (id_rsa) nicht entwendet werden kann. Dies ist der Knackpunkt. Verlieren Sie Ihren Rechner oder wird dieser gehackt, hat der Finder/Hacker freien Zugang mit den Ihnen zur Verfügung stehenden Rechten. In letzterem Fall haben Sie nicht einmal Kenntnis davon, weil die Schlüsseldatei einfach auf den Client des Hackers transferiert wird.
    Aus meiner Sicht ist diese Methode nur in begrenzten lokalen Netzen sicher genug und sollte NIE auf Rechnern mit SSH-Zugang zum Internet verwendet werden.
    Es gibt hier allerdings eine Ausnahme (weil technisch nicht anders realisierbar): Solle beispielsweise Backups über das Internet automatisch an eine entfernte Stelle transferiert werden, kann dies mit Passphrase nicht realisiert werden. In diesem Fall muss man auf dem Server besondere Sicherheitsmaßnahmen ergreifen (chroot-Umgebung).
    PublicKey mit PassphraseIn diesem Fall ist der Schlüssel zusätzlich mit einer Passphrase (einem Passwort) gesichert. Würde der Schlüssel alleine entwendet, kann der Hacker nichts damit anfangen, weil er ja nicht über die Passphrase verfügt.
    Diese Methode ist IMHO sicher genug, um Server über das (unsichere) Internet hinweg fernsteuern zu können (was man sich in jedem Fall gut überlegen sollte).

    Mehr dazu finden Sie im Kapitel SSH-Server härten.

    Die Schlüsseldateien

    Verwendet man mehrere Schlüssel, so werden normalerweise alle ausprobiert. Dabei werden nur die Schlüssel benutzt, welche im Verzeichnis ~/.ssh [1] liegen. Bei vielen Schlüsseln kann es dabei leicht zu timeout-Problemen kommen.

    Eine Lösung ist es, die Schlüssel in ein Unterverzeichnis zu kopieren und diese gezielt anzusprechen. Das geschieht dann am bequemsten mit einer Konfigurationsdatei. Ich speichere beispielsweise alle Schlüssel im Unterverzeichnis ~/.ssh/keys ab und wähle den entsprechenden Schlüssel dann passend aus.

    Ein Schlüsselpaar erzeugen

    Ein Schlüsselpaar kann sehr einfach mit folgendem Befehl erzeugt werden:

    $ ssh-keygen -t rsa -b 4096

    Soll der Schlüssel mit einer Passphrase gesichert werden, müssen Sie diese angeben (siehe Sicherheitsaspekte). So sieht das nun aus, wenn die Dateinamen nicht geändert wurden:

    • Die Datei id_rsa enthält den private key. Dieser darf ***auf keinen Fall*** weitergegeben werden.
    • Die Datei id_rsa.pub enthält den öffentlichen Schlüssel, der im nächsten Schritt noch auf den Server transferiert werden muss.

    Verschieben Sie die so erzeugten Dateien ggf. noch in Ihr Schlüsselverzeichnis:

    $ cd ~/.ssh
    $ mv id_rsa* keys

    Benennen Sie ggf. die Dateien Ihren Anforderungen gemäß um (z.B. in id-raspberrypi-rsa und id-raspberrypi-rsa.pub). Dies verhindert, dass Sie Schlüsselpaare versehentlich überschreiben.

    $ cd ~/.ssh/keys
    $ mv id_rsa id-raspberrypi-rsa
    $ mv id_rsa.pub id-raspberrypi-rsa.pub

    Den öffentlichen Schlüssel auf den Server laden

    $ ssh-copy-id -i ~/.ssh/keys/id-raspberrypi-rsa.pub pi@raspi1.fritz.box

    … kopiert den öffentlichen Schlüssel auf den Server (man darf in diesem Fall .pub auch weglassen; dieses Dienstprogramm kopiert immer den öffentlichen Schlüssel, so dass kein Versehen passieren kann.

    Versuchen Sie sich nun, sich mit Hilfe des Schlüssels anzumelden. Haben Sie keine Passphrase vergeben,, sollte dies nun passwortlos funktionieren.

    Fehlerquellen

    ssh-copy-id benötigt einen Passwort-Zugang. Sie müssen also ggf. vorübergehend in der Datei /etc/ssh/sshd_config auf dem Server PasswordAuthentication auf yes stellen.

    Mehr zum Thema

    Siehe auch

    Einzelnachweise und Anmerkungen

    ssh-Logohttps://icon-icons.com/de/symbol/ssh-original-Wortmarke-logo/146335
    [1]~ ist dabei eine Abkürzung für /home/<Benutzername>