Mit der Public-Key-Authentifizierung kann man einen sicheren SSH-Zugang einrichten, der sogar ganz ohne Passwort funktioniert. Grundsätzlich funktioniert das so, dass man auf dem Client-Rechner ein Schlüssel-(Key)-Paar erzeugt, dass aus einem öffentlichen (Public-)Key und einem privaten (Private-)Key besteht. Anschließend wird der Public-Key auf dem Plesk-Server hinterlegt. Bei einem SSH-Login wird dann überprüft ob der Public- und der Privat-Key zusammenpassen und nur wenn das der Fall ist, bekommt man Zugang.
Bei der Erstellung des Key-Paares kann man optional auch noch angeben, ob man zusätzlich auch noch ein Passwort angeben muss, oder ob der Login auch ohne Passwort funktioniert - dann sollte man allerdings dafür sorgen, dass der Privat-Key auch wirklich nicht in falsche Hände gerät!
Im Folgenden werde ich beschreiben, wie eine solche Public-Key-Authentifizierung zwischen einem Mac und einem Plesk-Server erstellt wird. Auf einem Windows-PC funktioniert das grundsätzlich gleich - allerdings müssen Sie sich dann noch ein Programm zur Erstellung des Schlüssel-Paares aus dem Internet herunterladen (meine Empfehlung: das kostenlose Programm
PuttyGen).
1. Schritt: Erstellung des Key-Paares
Falls Sie bisher noch kein Key-Paar erstellt haben, starten Sie auf Ihrem Mac das Terminal-Programm und erstellen Sie den versteckten Ordner /.ssh/ und passen die Rechte an in dem Sie folgende Befehle ausführen:
mkdir ~/.ssh
chmod 700 ~/.ssh
Dann erstellen Sie das Key-Paar mit folgendem Befehl:
ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
Anschließend wird nach einem Passwort gefragt. Wenn man das Passwort jedoch einfach leer läßt, funktioniert der SSH-Zugang dann auch ohne Passwort! Meine Empfehlung wäre jedoch, zumindest ein einfaches Passwort anzugeben, da im Falle, dass der Privat-Key ausspioniert wurde, dann trotzdem noch eine gewisse Sicherheit besteht.
2. Schritt: Public-Key auf den Server kopieren
Mit folgendem Befehl wird nun der Public-Key auf den Server kopiert:
cat ~/.ssh/id_rsa.pub | ssh root@mein-server.de 'cat >> .ssh/authorized_keys'
Statt "root" kann man natürlich auch einen anderen existierenden User auf dem Server angeben, um ihm einen SSH-Zugang einzurichten. Der obige Befehl setzt voraus, dass der Ordner /.ssh für den entsprechenden User bereits existiert - sollte das jedoch noch nicht der Fall sein kann man den Befehl auch wie folgt abwandeln:
cat ~/.ssh/id_rsa.pub | ssh root@mein-server.de 'mkdir .ssh; cat >> .ssh/authorized_keys'
Damit wären wir eigentlich schon fertig.
3. Schritt: Passwort-Authentifizierung abschalten und Port verlegen
Sinnvoll wäre es aber noch, den Login mit Passwort-Authentifizierung ganz abzuschalten und nur noch den Login mit Public-Key-Authentifizierung zuzulassen!
Dazu werden folgende Änderungen in der Datei /etc/ssh/sshd_config vorgenommen:
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
Außerdem wäre es noch empfehlenswert den SSH-Port von 22 auf einen anderen freien Port (z.B. 11022) zu verlegen (Achtung, nicht vergessen den Port in der Firewall zu öffnen!). Dazu trägt man in die Datei /etc/ssh/sshd_config auch noch folgendes ein:
Port 11022
Dann noch SSH neu starten mit /etc/init.d/ssh reload , damit die Änderungen aktiv werden und Daumen drücken, dass alles geklappt hat! ;)
Abschließend kann man den Port 22 in der Firewall auch noch dicht machen.
Fehlersuche:
Der häufigste Fehler dürften wohl falsch gesetzte Rechte im Verzeichnis /.ssh/ sein. Die korrekten Rechte werden wie folgt gesetzt:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/*