SSH bietet die Möglichkeit der Zugangs-Authentifizierung mittels öffentlicher Schlüssel (Public Key Authentication). Bei der konventionellen Zugangskontrolle durch Username und Passwort liegt die Schwachstelle beim Passwort, läßt es sich erraten, so ist der Zugang hergestellt.
Bei der zertifikatbasierten Zugangskontrolle wird durch das Dienstprogramm ssh-keygen
ein Schlüsselpaar, bestehend aus einem öffentlichen und einem privaten Schlüssel, erzeugt. Anschließend verbleibt der private Schlüssel auf dem Client, während der öffentliche Schlüssel auf den Server übertragen wird. Schlüssel lassen sich prinzipiell schwieriger kompromittieren als Kennwörter. Ein weitere Vorteil dieser Methode ist, daß sie (entsprechende Konfiguration vorausgesetzt) den Zugang ohne Benutzerinteraktion herstellen kann, zusätzlich läßt sie sich als einzig legitime Art der Anmeldung (Authentifizierung) festlegen. Der private Schlüssel wird üblicherweise nochmals mit einer Passphrase gesichert (von Passphrase spricht man, da sie aus mehreren Worten bestehen kann). Diese wird dann beim Zugang abgefordert. Um die Angabe der Passphrase nicht bei jedem Zugang vornehmen zu müssen, läuft normalerweise ein ssh-agent
, der die Angabe der Passphrase stellvertretend übernimmt.
Die Anmeldung erfolgt nun sinngemäß etwa folgendermaßen: Auf dem Client wird mittels des hier vorhandenen privaten Schlüssels eine Signatur erzeugt, diese wiederum kann der Server mit dem bei ihm hinterlegten öffentlichen Schlüssel des Client prüfen.
Praxis:
Erzeugen des privaten und öffentlichen Schlüssels (der Option -t
wird der Typ des Schlüssels übergeben, die möglichen Werte nennt die Manualseite):
# ssh-keygen -t rsa
Es entstehen Dateien mit den Schlüsselpaaren:
~/.ssh/id_rsa
und ~/.ssh/id_rsa.pub
.
Die *.pub
-Dateien können nun auf den Server kopiert werden und dort an ~/.ssh/authorized_keys
angehängt werden, diesen Schritt übernimmt das Dienstprogramm ssh-copy-id
:
# ssh-copy-id -i ~/.ssh/id_rsa.pub user@server