Eine kurze Anleitung zur Erstellung von DSA- bzw. RSA-Schlüsseln zur Authentifizierung via SSH. Die Sicherheit der Authentifizierung wird hiermit erhöht, außerdem ist es damit möglich automatische Verbindungen ohne Kennworteingabe (etwa für Cronjobs) herzustellen.
Zuerst muss ein Schlüsselpaar, bestehend aus einem privaten und einem öffentlichen Schlüssel, erstellt werden. Verwenden sollte man als Typ entweder “dsa” (Digital Signature Algorithm) oder “rsa” (benannte nach den Erfindern Rivest, Shamir und Adleman), nicht jedoch “rsa1″. Standardmäßig ist eine Schlüssellänge von 1024 Bit eingestellt, ich empfehle aufgrund der größeren Sicherheit die Verwendung von 2048 Bit.
Erstellen eines 2048 Bit RSA-Schlüssels
$ ssh-keygen -t rsa -b 2048 Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx user@host
Möchte man anstelle von RSA als Typ DSA verwendet, lautet der Befehl “ssh-keygen -t dsa -b 2048″. Wird der Schlüssel beispielsweise für automatisierte Zugriffe (etwa Cronjobs) verwendet, sollte keine “passphrase” eingegeben werden, da anderfalls bei der Verwendung des Schlüssels die Passphrase eingegeben werden muss.
Nach dem Ausführen dieses Befehls wurden im Ordner “.ssh” des Benutzers die Dateien id_rsa und id_rsa.pub bzw. id_dsa und id_dsa.pub angelegt. Bei id_rsa bzw. id_dsa handelt es sich um den privaten Schlüssel, der niemals in fremde Hände gelangen sollte und somit auch nicht weitergegeben werden darf. Ohne bedenken können die öffentlichen Schlüssel id_rsa.pub bzw. id_dsa.pub weitergegeben werden.
Öffentlichen Schlüssel auf entfernten Rechner kopieren
Damit man sich mit seinem privaten Schlüssel auf einem entfernten Rechner anmelden kann, muss der öffentliche Schlüssel auf diesen kopiert werden und zu den zugelassenen Schüsseln hinzugefügt werden. Dies funktioniert mit einem einzigen Befehl:
cat ~/.ssh/*.pub | ssh remoteuser@remotehost 'cat >> ~/.ssh/authorized_keys'
Wird “~” für das Homeverzeichnis nicht unterstützt (etwa auf Sun OS – Fehlermeldung “~: does not exist”), so muss man sich im Homeverzeichnis befinden und anschließend den folgenden Befehl ausführen:
cat .ssh/*.pub | ssh remoteuser@remotehost 'cat >> .ssh/authorized_keys'
Hat man mit dem entfernten Rechner noch nie eine Verbindung aufgebaut, muss diese bei der ersten Verbindung mit “yes” akzeptiert werden:
The authenticity of host 'remotehost (xxx.xxx.xxx.xxx)' can't be established. RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'remotehost,xxx.xxx.xxx.xxx' (RSA) to the list of known hosts.
Nachdem der öffentliche Schlüssel auf den entfernten Computer “remotehost” übertragen wurde, sollte eine ssh-Verbindung ohne Eingabe eines Passwortes aufgebaut werden können.
SSH-Server oder sshd absichern
Verwandte Beiträge
- id_rsa SSH-Schlüssel nach PuTTY ppk konvertieren
- SSH-Server oder sshd absichern
- Apache: Lokaler Zugriff ohne Passwort, externer Zugriff mit Passwort
- SSH-Client konfigurieren
- Mehrere IP-Adressen pro Netzwerkkarte
18. November 2011 - 02:09
DSA-Keys können immer nur 1024 lang sein. Das liegt wohl an der Spezifikation.