GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden von ssh-keygen und Sharing für die schlüsselbasierte Authentifizierung in Linux

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. ]


Linux
  1. Verwenden von AppImage für die Linux-Paketverwaltung

  2. 10 Linux-Befehls-Tutorials für Anfänger und Experten

  3. Tipps und Tricks zur Verwendung von CUPS zum Drucken unter Linux

  4. Verwenden von GPG zum Verschlüsseln und Entschlüsseln von Dateien unter Linux [Hands-on für Anfänger]

  5. So konfigurieren Sie die SSH-Schlüssel-basierte Authentifizierung in Linux

Bringen Sie podman unter Windows mit Linux zum Laufen

Tipps zur Verwendung des Top-Befehls unter Linux

Top 10 Linux-Distributionen für Laptop und Desktop

So finden Sie heraus, ob ein Benutzer unter Linux eine kennwortbasierte oder schlüsselbasierte SSH-Authentifizierung verwendet

So richten Sie die Multi-Faktor-Authentifizierung für SSH unter Linux ein

Verwenden von ifstat für Linux-Netzwerkstatistiken