Schlüsselbasierte SSH-Verbindung mit PuTTY und PuTTYgen

Aus Synology Wiki
Dies ist die bestätigte sowie die neueste Version dieser Seite.

Worum geht es?

Die folgende Anleitung beschreibt die Einrichtung einer SSH-Public-Key-Authentifizierung von einem lokalen Windows-Betriebssystem zu einem Synology NAS mithilfe der Programme PuTTY und PuTTYgen.

Einleitung

Secure Shell, abgekürzt SSH, ist ein Netzwerkprotokoll zum Aufbau verschlüsselter Verbindungen zwischen Geräten im lokalen Netzwerk oder über das Internet. Bei der SSH-Public-Key-Authentifizierung wird mithilfe eines Schlüsselpaares, bestehend aus einem privaten und einem öffentlichen Schlüssel, eine passwortfreie Anmeldung zu einem Remote-Server aufgebaut, die bei Bedarf durch die Eingabe einer zusätzlichen Passphrase weiter abgesichert werden kann. Die Verwendung eines solchen Schlüsselpaares ist daher wesentlich schwieriger zu kompromittieren als die Eingabe eines Passwortes.

PuTTY und PuTTYgen installieren

Um unter Windows einen RSA-Key zu erzeugen und sich anschließend über SSH mit einem Synology NAS verbinden zu können, benötigst du den PuTTY-Client und das darin enthaltene Programm PuTTYgen. Beide Programme können als Windows-Installer von der PuTTY Download-Seite heruntergeladen werden.

Öffentlichen und privaten Schlüssel mit PuTTYgen erzeugen

  • Starte PuTTYgen aus der Liste der Windows-Programme.
  • Wähle im Abschnitt Parameters / Typ of key to generated die Option RSA aus.
  • Im Abschnitt Parameters / Number of bits in a generated key wird die Anzahl der Bits auf mindestens 2048, besser auf 4096 eingestellt.
  • Klicke anschließend im Abschnitt Actions / Generate a public/private key pair auf die Schaltfläche Generate.

  • Du wirst nun aufgefordert, den Mauszeiger als Zufallsgenerator über das Fenster des PuTTY Schlüsselgenerators zu bewegen, um den öffentlichen und den privaten Schlüssel zu erzeugen.

  • Sobald der Prozess abgeschlossen ist und die Schlüsselinformationen angezeigt werden, kann im Abschnitt Key / Key comment: ein eindeutiger Name für den soeben erstellten Schlüssel angegeben werden. In diesem Beispiel nennen wir den Schlüssel puttygen-rsa-key.
  • Die Verwendung einer Passphrase im Abschnitt Key / Key passphrase: wird einerseits dringend empfohlen, da sie verhindert, dass der private Schlüssel einfach kopiert und verwendet werden kann, selbst wenn dein Client-Betriebssystem kompromittiert wurde. Der Nachteil einer Passphrase ist, dass du sie jedes Mal eingeben musst, wenn du eine Verbindung über SSH herstellen möchtest. Dies kann kontraproduktiv sein, wenn man später unbeaufsichtigte und damit automatisierte SSH-Verbindungen aufbauen möchte, um z.B. automatisierte Backups durchzuführen. In diesem Fall ist von der Eingabe einer Passphrase dringend abzuraten. Es bleibt also jedem selbst überlassen, ob er eine Passphrase verwenden möchte oder nicht. In diesem Beispiel wird keine Passphrase verwendet, sondern die beiden folgenden Abfragen werden einfach durch Drücken der Eingabetaste übersprungen.
  • Markiere anschließend den öffentlichen Schlüssel im Abschnitt Key / Public key for pasting into OpenSSH authorized_keys file. Klicke mit der rechten Maustaste auf den markierten Text, kopiere den öffentlichen Schlüssel in die Zwischenablage, öffne einen Texteditor deiner Wahl, füge den öffentlichen Schlüssel in die Datei ein und speichere die Textdatei unter einem Namen deiner Wahl an einem sicheren Ort.
  • Speichere anschließend den privaten Schlüssel an demselben sicheren Ort, indem du im Bereich Actions / Save the generated key auf die Schaltfläche Safe private key klickst. Auch hier ist der Dateiname frei wählbar, erhält aber die Endung .ppk. In diesem Beispiel lautet der Dateiname puttygen-rsa-key.ppk.

SSH Dienst aktivieren

Um eine SSH-Verbindung von deinem Windows-Betriebssystem zu deinem Synology NAS herzustellen, musst du zuerst den SSH-Dienst im DiskStation Manager (nachfolgend DSM genannt) aktivieren. Dazu meldest du dich am DSM deines Synology NAS mit einem Konto an, das zur Gruppe der Administratoren (administrators) gehört.

Anschließend navigierst du zu DSM-Hauptmenü > Systemsteuerung > Terminal & SNMP, wechselst dort auf die Registerkarte Terminal und aktivierst das Kontrollkästchen SSH-Dienst aktivieren. Direkt darunter kannst du bei Bedarf den Port anpassen, den der SSH-Dienst verwenden soll.

Hinweis: Standardmäßig ist hier der Port 22 voreingestellt. Aus Sicherheitsgründen wird jedoch empfohlen, diesen durch einen Port zu ersetzen, der bestenfalls im dynamischen und damit freien Portbereich zwischen 49152 und 65535 liegen sollte, wobei gegen die Verwendung von registrierten Ports, die im Portbereich zwischen 1024 und 49151 liegen, nach eingehender Prüfung nichts einzuwenden ist. In der folgenden Beschreibung wird jedoch beispielhaft Port 22 verwendet.

Durch Anklicken der Schaltfläche Übernehmen werden deine Einstellungen gespeichert.

Benutzer-Home-Dienst aktivieren

Um die erzeugten Schlüssel auf einem Synology NAS übertragen zu können, muss außerdem der Benutzer-Home-Dienst aktiviert werden. Melde dich dazu am DSM deines Synology NAS mit einem Konto an, das zur Gruppe der Administratoren (administrators) gehört.

Navigiere anschließend zu DSM-Hauptmenü > Systemsteuerung > Benutzer und Gruppe und wechsle dort auf die Registerkarte Erweitert. Aktiviere unter dem Menüpunkt Benutzerbasis das Kontrollkästchen Benutzer-Home-Dienst aktivieren.

Direkt darunter kann noch der homes-Speicherort ausgewählt werden, also das Volume, auf dem die Home-Verzeichnisse der Benutzer gespeichert werden sollen. Die Vorauswahl verweist hier zunächst auf das /volume1 und kann bei Bedarf angepasst werden, wenn mehrere Volumes zur Auswahl stehen.

Verbindung zum Synology NAS mit PuTTY herstellen

  • Starte PuTTY aus der Liste der Windows-Programme.
  • Trage im Abschnitt Specify the destination you want to connect to / Host Name (or IP address) und Port die IP-Adresse des Synology NAS ein, mit dem du dich verbinden möchtest und passe ggf. den zu verwendenden Port an. Dieses Beispiel verwendet die IP-Adresse 172.16.1.12 und den Port 22.
  • Wähle im Abschnitt Specify the destination you want to connect to / Connection type die Option SSH aus.
  • Klicke anschließend auf die Schaltfläche Open, um eine Verbindung zu deinem Synology NAS aufzubauen.

  • Beim ersten Verbindungsaufbau erhält man einen „Security Alert“ und wird aufgefordert, die Verbindung zu akzeptieren, um einen ersten Handshake durchzuführen, bei dem ein sogenannter Fingerprint für den zukünftigen Abgleich hinterlegt wird. Klicke daher auf die Schaltfläche Accept.

  • Nun sollte sich ein Terminalfenster öffnen, in das du deinen Benutzernamen und dein Passwort eingeben musst, um dich an der Konsole deines Synology NAS anzumelden. In diesem Beispiel wird der Benutzername tommes verwendet.
    login as: tommes
    tommes@172.16.1.12's password:
    
  • Nach erfolgreicher Anmeldung sollte nach einer kurzen Begrüßung und ggf. weiteren Informationen die Eingabeaufforderung bzw. der Prompt erscheinen.
    tommes@SynologyNAS:~$
    
  • Normalerweise solltest du dich nun in deinem eigenen Benutzer-Home-Verzeichnis befinden. Du kannst dies überprüfen, indem du den Befehl pwd (steht für "print working directory") eingibst und die Eingabetaste drückst.
    tommes@SynologyNAS:~$ pwd
    /var/services/homes/tommes
    
    Diesem Beispiel folgend befinden wir uns also im Home-Verzeichnis des Benutzers tommes (korrekterweise müsste hier natürlich dein Benutzername stehen) und genau dort wollen wir auch sein.

Kopieren des öffentlichen Schlüssels auf das Synology NAS

Zur besseren Lesbarkeit werden alle folgenden Eingaben ohne die Verwendung des Pompts tommes@SynologyNAS:~$ dargestellt.

  1. Zuerst wird ein neues verstecktes Verzeichnis mit dem Namen .ssh im Home-Verzeichnis des aktuell angemeldeten Benutzers angelegt.

    mkdir .ssh

  2. Anschließend wird das soeben erstellte Verzeichnis mit den entsprechenden Rechten versehen.

    chmod 700 .ssh

  3. Wechsel nun in dieses Verzeichnis

    cd .ssh

  4. Der Prompt sollte an dieser Stelle das Verzeichnis als Bestätigung enthalten, was in etwa so aussehen sollte

    tommes@SynologyNAS:~/ssh$

  5. Weiter geht es mit dem vi-Editor der beim Aufruf die Datei authorized_keys erstellen bzw. bearbeiten soll.

    vi authorized_keys

    Anmerkung: An dieser Stelle wird es etwas knifflig, denn der vi-Editor ist zwar einer der beliebtesten Texteditoren unter Linux, aber in der Bedienung sehr gewöhnungsbedürftig. Daher sollten die folgenden Anweisungen genau befolgt werden. Wenn man sich irgendwo vertippt hat, sollte man am besten durch Drücken der Escape- bzw, Esc-Taste in den Befehlsmodus zurückkehren und das Dokument schließen, ohne zu speichern. Dies geschieht durch Eingabe von :q! Danach einfach wieder von vorne anfangen.
  6. Zunächst benötigst du noch den öffentlichen Schlüssel, den du am Anfang dieser Anleitung aus PuTTYgen kopiert und in einer Textdatei gespeichert hast. Öffne die Datei, markiere den öffentlichen Schlüssel, klicke mit der rechten Maustaste auf den markierten Text und kopiere den öffentlichen Schlüssel erneut in die Zwischenablage. Wechsle dann zurück zum Terminalfenster, um im vi-Editor vom Befehlsmodus in den Eingabemodus zu wechseln. Gib dazu einfach ein... i
  7. ... ein, bewege den Mauszeiger in das Terminalfenster und drücke die rechte Maustaste. Dadurch wird der öffentliche Schlüssel aus der Zwischenablage in die geöffnete Datei authorized_keys des vi-Editors eingefügt. Das Ganze sollte ungefähr so aussehen...

  8. Wenn alles gut aussieht, drücke die Escape- bzw, Esc-Taste um zurück in den Befehlsmodus wechseln und beende den vi-Editor durch die Eingabe von...

    :qw!

  9. Du solltest dich wieder auf der Konsole wiederfinden. Beende die Terminalsitzung indem du...

    exit

... eingibs. Das Terminalfenster sollte sich automtisch schließen.

Einrichten von PuTTY für die Authentifizierung mit Schlüsseln

  • Starte PuTTY erneut aus der Liste der Windows-Programme.
  • Trage im Abschnitt Specify the destination you want to connect to / Host Name (or IP address) und Port die IP-Adresse des Synology NAS ein, mit dem du dich verbinden möchtest und passe ggf. den zu verwendenden Port an. Dieses Beispiel verwendet die IP-Adresse 172.16.1.12 und den Port 22.
  • Wähle im Abschnitt Specify the destination you want to connect to / Connection type die Option SSH aus.

  • Gehe im linken Abschnitt Category: zum Punkt Connection / Data und trag im rechten Abschnitt unter Login details / auto-login username den Benutzernamen ein, mit dem du dich auf deinen Synology NAS verbinden möchtest. Wenn das verwendete System eine direkte Authentifizierung mit Schlüssel zum Superuser root zulässt, kann an dieser Stelle auch root eingetragen werden.
  • Wähle im gleichen Abschnitt unter When username is not specified die Option Prompt aus.

  • Gehe im linken Abschnitt Category: zum Punkt Connection / SSH / Auth / Credentials und trage im rechten Abschnitt Public-key authenification / Private key file for authentification: den Pfad zu deinem privaten Schlüssel ein, den du am Anfang mit PuTTYgen erstellt und gespeichert hast. Benutze dazu am besten die Schaltfläche Browse, um die entsprechende Datei mit der Endung .ppk auszuwählen. In diesem Beispiel lautet der Dateiname puttygen-rsa-key.ppk.

  • Gehe im linken Abschnitt Category: zurück zum Punkt Session und trag im rechten Abschnitt unter Load, save or delete a stored session / Saved Sessions einen Namen für die Verbindung ein und klicke anschließend auf Save.

  • Damit hast du in Zukunft die Möglichkeit, die soeben erstellte Konfiguration innerhalb von PuTTY auszuwählen, um dich mit deinem Synology NAS per Schlüsselaustausch zu authentifizieren.