Gerade wenn man mehrere Kisten per SSH betreut, ist es ungemein nervig, sich für jede dieser die Logindaten zu merken, bzw. immer wieder das plöde Passwort einzutippern. Also was kann man dagegen tun?
-> Mit Zertifikaten arbeiten!
Nebenbei erhöht das auch noch die Sicherheit, da die/der Server nach Abschluß der Maßnahmen kein getippten Passwörter mehr akzeptiert!
Also als erstes erkläre ich kurz einfach, wie das ganze funktionieren soll. Im Grunde kann man sich das ungefähr so vorstellen, das ein einfaches, meist sehr kurzes Passwort durch ein sehr langes ersetzt wird. Nur wird es dann Zertifikat genannt. Dieses Zertifikat ist in zwei Teile aufgeteilt; in einen privaten und in einen öffentlichen Teil. Der öffentliche Teil liegt hinterher auf dem Zielserver und dient dazu unseren privaten Teil zu validieren, also die Echtheit zu bestätigen. in der Kryptografie nennt man dies auch Schlüsselpaar.
In der Praxis läuft das so ab:
Wir verbinden uns mit dem Zielserver, unser privater Schlüssel wird quasi vorgezeigt, der Zielserver schaut nach ob der öffentliche Teil dazu passt und lässt uns passieren (Wenn alles korrekt war). Kein Passwort, nix, super!
Aber Achtung! Der private Schlüssel muss geschützt werden! Fällt dieser private Schlüssel z.B. durch einen Einbruch in falsche Hände, die auch noch wissen was sie tun, steht dem Missbrauch natürlich Tür und Tor offen!
Es gibt dazu 2 Optionen die bei erhöhten Sicherheitsbedürfnissen greifen könnten:
1. Der private Schlüssel wird wiederum auf einer verschlüsselten Partition/Image abgelegt,
2. oder der private Schlüssel selber wird nochmal durch ein Passwort geschützt. Er lässt sich also erst nach erfolgreicher Eingabe eines Passwortes nutzen. Dies hat aber immer noch den Vorteil, das man sich nur EIN Passwort für alles merken muss. Auf das Thema kommen wir aber gleich nochmal zurück.
Fangen wir mal klein für Zuhause an, da reicht auch ein Zertifikat ohne Passwort einfach nur um das Leben zu erleichtern:
Zertifikatspaar erstellen:
#> ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/marcel/.ssh/id_dsa): Passt, Enter drücken.
Enter passphrase (empty for no passphrase): Leerlassen, Enter drücken.
Enter same passphrase again: Er wills nochmal wissen: Leerlassen, Enter drücken.
Abschliessend kommt dann die Bestätigung:
Your identification has been saved in /home/marcel/.ssh/id_dsa.
Your public key has been saved in /home/marcel/.ssh/id_dsa.pub.
The key fingerprint is:
a4:71:49:8e:5d:5c:a2:cb:01:cd:0e:81:c6:2d:58:7b marcel@knecht.bsdbox.de
Empfehlung: Sichert den privaten Key JETZT irgendwo anders hin, von mir aus auf Diskette, nur weg von dem Computer wo Ihr grad dransitzt. Ist dieser Key weg, seit Ihr hinterher ausgesperrt!
#> cp /home/marcel/.ssh/id_dsa /irgendwo/hin/
Damit sind die arbeiten auf der eigenen Kiste nun auch abgeschlossen, jetzt folgt der erste Server.
Also das bekanntmachen des öffentlichen Schlüssels.
Achtung: bitte prüfen Sie vor dem Kopierversuch, ob auf dem Zielrechner ein Verzeichnis ~/.ssh existiert und ob dieses die richtigen Zugriffsrechte (0700) hat. Gegebenenfalls legt Ihr es grad an:
#> ssh user@192.168.1.1
Password: (Passwort eingeben)
#> mkdir -m 0700 ~/.ssh/
Zunächst wird nun der öffentliche Schlüssel auf den Zielrechner kopiert…
#> scp ~/.ssh/id_dsa.pub marcel@ZIELRECHNER:~/.ssh/id_dsa.pub
Password: (Passwort eingeben)
…und dort dann den zugelassenen Schlüsseln hinzugefügt. Wir erlauben quasi die Nutzung:
#> ssh user@ZIELRECHNER
Password: (Passwort eingeben)
#> cat .ssh/id_dsa.pub >> .ssh/authorized_keys
Nun können wir das automatische Login einmal testen. Also die aktuelle Verbindung kappen!
Jetzt sollte ein erneuter ssh user@ZIELRECHNER ohne die Angabe des Passwortes zum Login führen
Hat dies geklappt, könnt Ihr die normale Passwortabfrage von ssh auf dem Zielrechner abschalten:
Editiere die Datei /etc/ssh/sshd_config (FreeBSD und Linux) und ändert den Eintrag
PasswordAuthentication yes in PasswordAuthentication no
Danach nur den ssh-Dienst neu starten, fertig.
Für Sicherheitsbedürfnisse, gerade bei Rechner ausserhalb den lokalen Netzwerkes ist so ein Public Key natürlich eine heiße Angelegenheit. Damit aber nicht alles nochmal neu gemacht werden muss, besteht die Möglichkeit ein Passwort auch nachträglich zu setzten bzw. zu ändern:
#> ssh-keygen -p -f ~/.ssh/id_dsa
Pingback: bsdbox » SSH Login ohne Passwortabfrage
Pingback: from hades » Blog Archive » links for 2006-12-12
Pingback: links for 2006-12-12 at from hades
Pingback: www.dragonito.net » Blog Archiv » SSH Login ohne Passwort