Wenn Sie jemals als Systemadministrator gearbeitet haben (oder dies in Zukunft tun möchten), benötigen Sie ein gutes Verständnis von SSH. Ich werde Sie nicht durch das allgemeine Konzept führen, da es hier bei Enable Sysadmin bereits gehasht wurde. Ich möchte jedoch nach einer möglicherweise besseren Möglichkeit suchen, es zu verwenden. SSH ist das am häufigsten verwendete Fernzugriffsprotokoll der Welt. Daher ist es sinnvoll, dass wir versuchen sollten, seine Verwendung so weit wie möglich zu verbessern.
Während meiner Zeit als Support-Techniker habe ich SSH verwendet, um eine Remote-Verbindung zu Tausenden von Kundencomputern herzustellen, und ich bin sicher, dass andere ähnliche Erfahrungen gemacht haben. Bei der herkömmlichen SSH-Authentifizierung benötigen Sie jedes Mal, wenn Sie auf ein System zugreifen möchten, den Benutzernamen und das Passwort für das Konto, bei dem Sie sich anmelden möchten. Klingt nicht so schlimm, oder? Aber was passiert, wenn Sie regelmäßig zwischen Systemen hin und her springen müssen? Oder was ist, wenn Ihre Verantwortlichkeiten den ganzen Tag über Remote-Sitzungen zu denselben 100 Systemen für Zustandsprüfungen umfassen? Es gibt eine andere Möglichkeit, sich anzumelden, und mit einer kleinen Vorabinvestition kann es insgesamt viel effizienter sein.
Prozesshärtung
Es ist objektiv wahr, dass ein verschlüsselter Schlüssel für diejenigen mit bösen Absichten ein viel schwierigeres Ziel ist als ein Benutzername und ein Passwort. Obwohl es ein wenig Einarbeitung erfordern kann, ist das Erstellen und Verwenden von SSH-Schlüssel-basierter Authentifizierung die Investition für jeden Systemadministrator wert.
So funktioniert es. Sie generieren einen öffentlichen Schlüssel und einen passenden privaten Schlüssel. Die private Schlüsseldatei fungiert als Passwort und sollten sicher aufbewahrt werden. Der öffentliche Schlüssel wird jedoch auf die Zielsysteme kopiert, mit denen Sie sich regelmäßig verbinden. Sie platzieren den öffentlichen Schlüssel im Home-Verzeichnis Ihres Kontos auf dem Zielserver. Wenn Sie versuchen, sich anzumelden, werden die Schlüssel überprüft und der Zugriff gewährt.
Nun, es gibt zwei Möglichkeiten, wie Sie dies tun können. Einer ist bequemer und der andere ist etwas langweilig, aber mit zusätzlichem Schutz für Sie. Der bequeme Weg ist, kein Passwort zusammen mit dem privaten Schlüssel anzugeben. Das Ergebnis ist, dass Sie kein Passwort eingeben müssen, wenn Sie Ihren privaten Schlüssel zur Authentifizierung verwenden. Das bedeutet, dass jemand, der Ihren privaten Schlüssel in die Hände bekommt, ihn auch zur Authentifizierung verwenden kann. Die andere Methode besteht darin, Ihren privaten Schlüssel mit einem Passwort zu schützen, sodass Sie bei der Authentifizierung zur Eingabe des Passworts aufgefordert werden (denken Sie an die Zwei-Faktor-Authentifizierung, bei der sowohl der private Schlüssel als auch das Passwort verwendet werden).
ssh-keygen ohne Passwort
Verwenden Sie den folgenden Befehl, um ein SSH-Schlüsselpaar zu generieren:
[user@host ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
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:
SHA256:veutUNPio3QDCyvkYm1oIx35hmMrHpPKWFdIYu3HV+w [email protected]
The key's randomart image is:
+---[RSA 2048]----+
| |
| . . |
| o o o |
| . = o o . |
| o + = S E . |
| ..O o + * + |
|.+% O . + B . |
|=*oO . . + * |
|++. . +. |
+----[SHA256]-----+
Standardmäßig werden Ihre privaten und öffentlichen Schlüssel in Ihrem ~/.ssh/id_rsa
gespeichert und ~/.ssh/id_rsa.pub
Dateien.
ssh-keygen mit einem Passwort
Das Erstellen eines passwortgeschützten Schlüssels sieht ungefähr so aus:
[user@host ~]$ ssh-keygen -f .ssh/key-with-password
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in .ssh/key-with-password.
Your public key has been saved in .ssh/key-with-password.pub.
The key fingerprint is:
SHA256:s7GGB7EyHUry4aOcNPKmhNKS7dl1YsMVLvFZJ77VxAo [email protected]
The key's randomart image is:
+---[RSA 2048]----+
| . + =.o ... |
| = B XEo o. |
| . o O X =.... |
| = = = B = o. |
|= + * * S . |
|.+ = o + . |
| + . |
| |
| |
+----[SHA256]-----+
Verwenden Sie das -f
Option, um die Datei anzugeben, in der die Schlüssel gespeichert werden. Im obigen Beispiel werden die privaten und öffentlichen Schlüssel in /home/user/.ssh/key-with-pass
gespeichert und /home/user/.ssh/key-with-pass.pub
Dateien.
Warnung
Wenn Sie bei der weiteren Generierung des SSH-Schlüsselpaars keinen eindeutigen Dateinamen angeben, werden Sie aufgefordert, die Erlaubnis zum Überschreiben der vorhandenen id_rsa
einzuholen und id_rsa.pub
Dateien. Wenn Sie die vorhandene id_rsa
überschreiben und id_rsa.pub
Dateien, müssen Sie dann den alten öffentlichen Schlüssel auf ALLEN durch den neuen ersetzen der SSH-Server, die Ihren alten öffentlichen Schlüssel haben.
Sobald Sie die Schlüssel generiert haben, werden sie in /user/home/.ssh/
gespeichert Verzeichnis mit den folgenden Berechtigungen:
- Privater Schlüssel - 600
- Öffentlicher Schlüssel - 644
Sie sind noch nicht fertig. Sehen wir uns den letzten Schritt einer erfolgreichen SSH-Schlüssel-basierten Authentifizierung an.
Schlüssel teilen
Damit all dies funktioniert, müssen Sie Ihren öffentlichen Schlüssel mit den Remote-Computern teilen, zu denen Sie SSH verwenden möchten. Verwenden Sie die ssh-copy-id
Befehl, um Ihren öffentlichen Schlüssel auf das Zielsystem zu kopieren. Standardmäßig ist der Dateipfad /home/user/.ssh/id_rsa.pub
. Sie geben den Befehl aus, geben die Datei an, die Sie teilen, und dann den Benutzer/Host, mit dem wir sie teilen. Es sollte so aussehen:
[user@host ~] $ ssh-copy-id -i .ssh/key-with-pass.pub user@destination
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user@destination password: changeme
Number of key(s) added: 1
Nachdem Sie den öffentlichen Schlüssel mit dem Zielhost geteilt haben, können Sie sich beim Remote-Server authentifizieren, indem Sie den passenden privaten Schlüssel übergeben. Wenn Sie einen Dateipfad für Ihren privaten Schlüssel angegeben haben, müssen Sie ihn hier angeben. Andernfalls ist es standardmäßig /home/_user_/.ssh/id_rsa
.
Hier zu sehen:
[user@host ~]$ ssh -i .ssh/key-with-password user@desination
Enter passphrase for key '.ssh/key-with-password' : password here if you set one
[user@destination ~] $
Vorteile und Zusammenfassung
Die Vorteile der Verwendung von SSH-Schlüssel-basierter Authentifizierung liegen auf der Hand. Passwörter werden jeden Tag gestohlen, hauptsächlich aufgrund menschlicher Fehler, aber auch aufgrund der Fähigkeiten und Entschlossenheit der Angreifer. Ein verschlüsselter Schlüssel, genauer gesagt ein passwortgeschützter verschlüsselter Schlüssel, macht Ihre SSH-Authentifizierung noch schwieriger angreifbar. Sie müssen immer noch ein Gleichgewicht zwischen Verfügbarkeit und Sicherheit finden, aber das wird in jeder Umgebung anders gehandhabt.
[ Kostenloser Online-Kurs:Technischer Überblick zu Red Hat Enterprise Linux. ]