[Howto] - SSH-Login via PuTTY ohne Passwort

  • Hi folks,


    nachdem bei mir keiner der hier bereits vorhandenen Lösungsvorschläge für einen RSA-Key-Login auf meiner TS-119P II funktioniert hat, möchte ich euch die in meinem Fall funktionierende Variante nicht vorenthalten.


    Benötigte Zeit circa 5-10 Minuten
    Schwierigkeitsgrad einfach bis mittel


    Benötigt werden zum einen natürlich PuTTY , zum anderen PuTTYgen, beide findet ihr unter folgender Adresse http://www.chiark.greenend.org…atham/putty/download.html


    1. Schritt
    Ihr meldet euch als Admin auf der Shell mit eurem Passwort an und führt folgenden Befehl aus

    Code
    ssh-keygen -t rsa


    Darauf hin erhaltet ihr folgende Ausgabe "Enter file in which to save the key (/share/homes/admin/.ssh/id_rsa):" hier gebt ihr nun "/root/.ssh/id_rsa" an, oder wählt einen beliebigen Pfad wie "/share/Public/id_rsa", die Pfadangabe muss dann aber in den nachfolgenden Schritten angepasst werden!


    Kurzer Einschub für eventuelle Rückfragen, "/share/Public/" wird per Symlink auf "/share/HDA_DATA/Public/" geleitet, ich weiß nicht, ob dies für alle QNAP-Produkte werkseitig gilt?!


    2. Schritt
    Schickt jetzt den folgenden Befehl ab, damit der erzeugte Public-Key ausgelesen und in die authorized_keys eingefügt wird

    Code
    cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys


    3. Schritt
    Setzt nun die entsprechenden Rechte (Besitzer lesen/schreiben)

    Code
    chmod 600 /root/.ssh/authorized_keys


    4. Schritt
    Damit die nachfolgen Änderungen aus Schritt 5 greifen, kopiert die "/etc/ssh/sshd_config" in ein Verzeichnis, welches nicht bei einem Neustart ersetzt wird, ich wähle "/share/Public/"

    Code
    cp /etc/ssh/sshd_config /share/Public/sshd_config


    5. Schritt
    Bearbeitet die nachfolgenden Punkte der neuen sshd_config - im Public - wie folgt
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile /root/.ssh/authorized_keys

    In meinem Fall waren diese Punkte unwirksam # - einfach die Raute entfernen ...


    6. Schritt
    Editiert die (evtl. noch nicht) vorhandene autorun.sh, siehe Wiki http://wiki.qnap.com/wiki/Runn…wn_Application_at_Startup

    Code
    #sshd_config auch nach Restartcp /share/HDA_DATA/Public/sshd_config /etc/ssh/sshd_config


    Obiger Code muss hinzugefügt werden. Somit übersteht die "sshd_config" auch einen Reboot!


    7. Schritt
    Um einen Private-Key zu erstellen schickt ihr folgenden Befehl ab

    Code
    cat /root/.ssh/id_rsa


    Markiert und kopiert die angezeigte Ausgabe und fügt diese in Wordpad/Editor und speichert als private_key.txt


    8. Schritt
    Startet den PuTTY-Generator - puttygen.exe - und wählt den Punkt "load an existing private key file", wählt hier "all files", damit alle Dateiendungen angezeigt werden und öffnet das zuvor gespeicherte private_key.txt.


    Speichert nach erfolgreichem Laden diesen Key unter der Dateiendung .ppk - beispielsweise qnap_key.ppk.


    9. Schritt
    Öffnet PuTTY und geht auf der linken Seite auf "Connection - SSH - Auth" und klickt unter dem Punkt "Private key file for authentication" den zuvor abgespeicherten Private Key "qnap_key.ppk".


    Gebt anschließend unter "Connection - Data" unter dem Punkt "Auto-login username" admin an.


    Jetzt klickt ihr auf Session und gebt unter Host die IP eures NAS an und speichert den Vorgang unter z.B. "QNAP Shell" (unterhalb v. Saved Sessions eingeben und Save klicken).


    10. Schritt
    Reboot - das wars! Jetzt sollte ihr durch Doppelklick auf zuvor angegebenen Namen "QNAP Shell" automatisch angemeldet werden.


    Cheers

  • Danke für das sehr ausführliche Howto

  • Anmerkung


    zumindest auf meiner TS410 mit FW4.1. konnte zwar der admin von der konsole direkt das file im ordner ~/.ssh/ auslesen.


    sprich

    Code
    ssh -i ~/.ssh/RSA_keyfile admin@sonstwo

    hat gut funktioniert. login von einer qnap zur anderen hat ohne passwort funktioniert.


    der prozess rsnapshot dem ich das gleiche argh mitgegeben hatte hat die datei nicht gefunden


    hier musste ich den pfad als /root/.ssh/keyfilename angeben.


    gruß manne