Public Key Verfahren mit ssh

ssh ist ein extrem hilfreiches Programm, um entfernte Rechner zu administrieren. Mit Benutzernamen und Passwort bekommt man eine shell auf dem Zielsystem. Passwörter haben jedoch immer das Problem, das sie zu einfach sind und deswegen erraten werden können oder zu kompliziert, dass sie sich keiner, nicht mal der legitime Nutzer, merken kann. Um ohne Passwort aber dennoch sicher, sogar sicherer als mit Passwort, auf den gewünschten Rechner zu kommen, bietet ssh das Public-Key-Verfahren an.

Die Einrichtung des Public Key Verfahrens habe ich auf meiner Seite über ssh erklärt. In Verbindung mit dem ssh-agent muss sich nur noch ein Passwort gemerkt werden, welches auch nur noch einmal eingegeben werden muss. Und dann ist alles ganz einfach.

tocs@client:~$ ssh 'root@server'
Welcome to server :)

Ich kann nur noch mal davor warnen, dem privaten Schlüssel keine bzw. eine leere Passphrase zu vergeben. Aus Komfortsicht ist natürlich erstmal nichts gewonnen. Ob man nun für den privaten Schlüssel eine Passphrase oder für den Benutzer ein Passwort eingeben muss, ist für den Anwender das Gleiche. Das stimmt, aber es ist ein zusätzlicher Sicherheitsgewinn. Der private Schlüssel gilt quasi als Berechtigungskarte, mit der jeder, der im Besitz dieser Datei ist, Zugang zum Server erhält. Geht diese verloren ist der Server offen. Mit einer zusätzlichen Passphrase ist der Schlüssel erstmal geschützt. Mit Hilfe des ssh-agents kann der Komfort deutlich gesteigert werden. Die Einrichtung ist ebenfalls auf meiner ssh-Seite beschrieben.

ssh-agent und kde

Die Schlüssel müssen bei jedem Anmelden dem ssh-agent erneut übergeben werden. Das geht prima manuell, Konsole auf, ssh-add, Passphrase eingeben und Konsole wieder schliessen. Soll dies dann doch lieber automatisch geschehen, kann im Autostart von kde ein Skript hinterlegt werden, welches bei jedem Anmelden durchlaufen wird. ssh-add würde dann aber auf der Konsole, die schwer erreichbar ist, nach der Passphrase fragen. Für dieses Problem gibt es ksshaskpass, welches ein Fenster öffnet und nach der Passphrase fragt. Außerdem könnte man die Passphrase auch gleich im kwallet speichern, so dass man die Passphrase nur ein einziges Mal eingeben muss. Aber das machen wir ja nicht 🙂

#!/bin/bash
export SSH_ASKPASS=/usr/bin/ksshaskpass
/usr/bin/ssh-add

Die Datei legen wir unter .kde/Autostart/ssh-add.sh an. Je nach Distribution kann das Verzeichnis auch .kde4 heißen. Auf jeden Fall sollte sie aber ausführbar sein.

ssh und sudo

Der ssh-agent ist schon eine große Hilfe beim Umgang mit ssh-Schlüsseln. Mit diesem kann mein aktueller Benutzer auf andere Rechner zugreifen. Benötigt ein Programm erweiterte Rechte so kann dies unter Ubuntu per sudo ausgeführt werden und erhält so kurzfristig root-Rechte. Aus Sicherheitsgründen kann dieses Programm erstmal nicht mit dem ssh-agemt kommunizieren und erhält damit keinen Zugriff auf die Schlüssel.
Zum Glück kann ja fast alles unter Linux konfiguriert werden. sudo setzt sämtliche Umgebungsvariablen des Benutzers zurück, unter anderm auch die Variable SSH_AUTH_SOCK. Diese teilt ssh mit, wo der Socket zum ssh-agent zu finden ist. Die Lösung ist daher, diese Variable ausnahmsweise weiterzugeben. Die Änderungen an der Datei /etc/sudoers sind gering.

Defaults env_reset
Defaults!DIRVISH env_keep+="SSH_AUTH_SOCK"
# Defaults env_keep+="SSH_AUTH_SOCK"
# Cmnd alias specification
Cmnd_Alias DIRVISH = /usr/sbin/dirvish, /usr/sbin/dirvish-runall

In dieser Konfiguration wird für die Kommandos /usr/sbin/dirvish und /usr/sbin/dirvish−runall (und zwar nur für diese beiden) zusätzlich die Variable SSH_AUTH_SOCK übergeben. Möchte man für alle Kommandos diese Variable weitergeben, kommentiert man die zweite Defaults-Zeile wieder ein.
Diese Lösung funktioniert nur bei einem sudo um root-Rechte zu erlangen. Der Socket des ssh-agent hat nämlich eine 600 als Rechtemaske. Somit kommt nur root und der Besitzer an diesen Socket.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

WordPress Cookie Hinweis von Real Cookie Banner