Ich will hier kurz beschreiben, wie das geht (es gibt auch andere Möglichkeiten). Die Anleitung bezieht sich auf das Erschaffen der keys für root. Soll für einen anderen user keys erschaffen werden, so muss die Tilde ~ in der Anleitung durch den Pfad zum Homeverzeichnis des users ersetzt werden, sofern man nicht als dieser angemeldet ist.
Man kann für root zwar auch ein Schlüsselpaar erschaffen, wenn man noch kein root-Passwort vergeben hat, die Anmeldung funktioniert dann aber nicht für den Benutzer root. Also ggf. noch „sudo passwd“ ausführen und ein root-Passwort vergeben.
Man wechselt in das Verzeichnis /root/.ssh/
cd /root/.ssh
Das Schlüsselpaar wird hier erstellt mittels
ssh-keygen -t rsa
Den vorgeschlagenen Namen und Pfad kann man übernehmen (/root/.ssh/id_rsa )
Ein Passwort, das den Schlüssel später „unterwegs“ schützt, sollte man vergeben.
Man erhält zwei Schlüssel id_rsa
und id_rsa.pub
. Die Datei
id_rsa
nimmt man mit (nach Hause ..)
id_rsa.pub
muss auf dem Server an der richtigen Stelle hinterlegt werden:
Wir befinden uns ja noch immer in /root/.ssh/
)
touch authorized_keys
cat id_rsa.pub >> authorized_keys
Eine Einstellung des sshd ändern und ssh neustarten:
Editieren der Datei /etc/ssh/sshd_config
Man muss nur ein # vor der Zeile
AuthorizedKeysFile %h/.ssh/authorized_keys
entfernen und sshd mittels
/etc/init.d/ssh restart
neustarten (ich habe kein „d“ vergessen) Das geht auch, während man von außerhalb über ssh am server arbeitet.
Wenn man den Schlüssel id_rsa
zuhause hat, muss man ihn noch in das putty Format umwandeln.
Dazu lädt man puttygen.exe von:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
herunter, startet es und importiert den key über File→load privat key
Beim Laden des key wird man einmal nach dem Passwort gefragt, dass man beim Erstellen angegeben hatte. Dann sollte man noch ganz unten auf SSH-2 RSA umstellen und abschließend auf „Save privat key“ drücken.
Dazu den Key in das home des Users unter ~/.ssh/id_rsa
ablegen. Der Key wird aber von ssh nur verwendet, wenn er nur für den User selbst lesbar ist, somit ggf.:
chmod 600 /.ssh/id_rsa
Man startet Putty und läd das Profil seiner Schule. Dann geht man links auf „ssh“→„Auth“ und drückt auf „Browse“. Dort wählt man den key aus, den man gerade mittels puttygen aus dem rsa-key erstellt hat. Nun würde ich noch mal speichern und dann die Sitzung öffnen. Man wird nach dem user gefragt und dann nach dem Passwort für den key (nicht das Linuxpasswort von root).
Nach dem Einloggen wird man noch nach dem Benutzer gefragt. Dort muss ich den Benutzer angeben, in dessen authorized_keys der .pub key meines verwendeten keys ist (in unserem Fall „root“). Vorher muss ich natürlich das Passwort des keys eingeben (welches ich beim Erstellen vergeben und bei puttygen noch mal verwendet habe. Es hat gegebenenfalls nichts mit dem Linuxpasswort des Benutzers zu tun). Diese keys funktionieren eigentlich genauso wie die von VPN. Auch dort wird der mobile Teil des keys (Zertifikat) mittels eines Passworts geschützt.
Wofür ist das ganze Theater:
/etc/ssh/sshd_config
eine Zeile ändern:
Am Ende steht
„UsePAM yes
“
daraus macht man
„UsePAM no
“ und „PasswordAuthentication yes
“ wird zu: „PasswordAuthentication no
“
es wird kein Abgleich durch den ssh Dämon mit der lokalen userdatenbank mehr vorgenommen, es funktionieren nur noch Zertifikate!
/etc/init.d/ssh restart
nicht vergessen!
Den von puttygen generierten Key kann man auch einfach in WinSCP verwenden (auf der ersten Seite gibt es ein Feld für den private key)
In der Datei /etc/security/access.conf
wird nur root, adm und administrator der Login am Server erlaubt:
... -:ALL EXCEPT root adm administrator:ALL ...
Um weiteren Usern das Login zu erlauben fügt man vor dieser Zeile z.B. ein:
... +:pgmadmin meier schmitt:ALL -:ALL EXCEPT root adm administrator:ALL ...