Es gibt zwei Möglichkeiten zum Konfigurieren ssh
, um sowohl einen öffentlichen Schlüssel als auch ein Kennwort oder eine Passphrase zu erfordern.
Der Unterschied zwischen dem Passwort und der Passphrase:
Das Kennwort ist in diesem Zusammenhang das Kennwort, das dem Benutzer auf dem Servercomputer (der Karte) zugewiesen wurde. Wenn das Board nur ein Benutzerkonto hat, hat es nur ein Passwort. Wenn das Board über mehrere Benutzerkonten verfügt, sollten diese über eindeutige Kennwörter verfügen.
Die Passphrase ist mit dem privaten Schlüssel auf dem Client-Computer (lokal) und nicht mit dem Remote-Server-Computer (Board-Computer) verknüpft. Wenn Sie also zwei verschiedene Clientcomputer von Geräten verwenden, von denen aus ssh gesendet werden soll, müssen Sie Passphrasen für die privaten Schlüssel erstellen, die auf jedem lokalen Computer gespeichert sind. Wenn zwei verschiedene Benutzer von ihren jeweiligen lokalen Computern zum Server (Board) ssh müssen, benötigen sie ihre eigenen privat-öffentlichen Schlüsselpaare und eine eigene Passphrase, um ihre jeweiligen privaten Schlüssel zu entsperren.
Angenommen, Sie und ich müssen von unseren eigenen Laptops aus auf den Speicher-Server-Computer (das Board) ssh. Sie haben Ihren eigenen privaten Schlüssel und eine Passphrase für diesen privaten Schlüssel. Ich werde meinen eigenen privaten Schlüssel und seine Passphrase haben. Das Ergebnis dieser Anordnung ist, dass ich die Passphrase meines privaten Schlüssels jederzeit ändern kann, ohne es Ihnen mitzuteilen, oder irgendetwas am Servercomputer (der Karte) zu ändern. Ich kann sogar die Passphrase aus meinem privaten Schlüssel entfernen, ohne es Ihnen zu sagen.
Das andere Szenario ist, dass ich, wenn ich mehrere Server zum SSH habe und denselben privaten Schlüssel verwende, um mich bei allen Servern zu authentifizieren, dieselbe Passphrase verwenden muss, um auf SSH auf allen Servern zuzugreifen, mit denen ich arbeite, und nicht nur dein Board.
Methode 1. Öffentlicher Schlüssel mit Passphrase
Referenz: https://help.ubuntu.com/community/SSH/OpenSSH/Keys
Schritt 1. Fügen Sie dem vorhandenen öffentlich-privaten Schlüssel für jede Client- und Benutzerkombination eine Passphrase hinzu
Verwenden Sie für jeden Benutzer auf jedem Client-Computer oder -Gerät den folgenden Befehl, um eine Passphrase für das bestehende öffentlich-private Schlüsselpaar zu generieren:
ssh-keygen -p
Sie werden aufgefordert, den Speicherort für die Dateien anzugeben. Drücken Sie die Eingabetaste, um den Standardspeicherort zu übernehmen.
Wenn Sie bereits eine Passphrase festgelegt haben, werden Sie aufgefordert, die vorhandene Passphrase einzugeben. In diesem Fall haben Sie diesen Schritt bereits ausgeführt. Drücken Sie Ctrl+ C, um den Vorgang zu stoppen.
Als nächstes werden Sie aufgefordert, eine neue Passphrase einzugeben. Drücken Sie nicht die Eingabetaste! Geben Sie eine lange und schwer zu erratende Passphrase ein, die leicht zu merken ist. Sie werden aufgefordert, die Passphrase erneut einzugeben.
Wenn Sie kein öffentlich-privates Schlüsselpaar haben, generieren Sie es mit dem folgenden Befehl. Sie werden aufgefordert, eine Passphrase hinzuzufügen, falls Sie eine benötigen:
ssh-keygen -t rsa
Jedes Mal, wenn Sie versuchen, sich beim SSH-Server anzumelden, werden Sie aufgefordert, diese Passphrase einzugeben. Dies kann für das Benutzerkennwort des SSH-Servers unterschiedlich sein. Jeder Benutzer kann seine eigene Passphrase haben. Wenn sich ein Benutzer von verschiedenen Clients (Laptop, Telefon usw.) aus anmelden muss, muss er diesen Vorgang für jeden Client wiederholen. Sie kann verschiedene Passphrasen für verschiedene Kunden wählen.
Schritt 2. Kopieren Sie den öffentlichen Schlüssel nur dann auf den Server, wenn der Schlüssel neu ist
Geben Sie auf Ihrem Client-Computer Folgendes ein:
ssh-copy-id -i ~/.ssh/id_rsa user@board_ip
Es wird nach dem Passwort des Benutzers auf dem Remote-Server gefragt. Denken Sie daran, dass die kennwortbasierte Anmeldung aktiviert sein muss, damit dies funktioniert.
Wiederholen Sie dies für alle Benutzer und alle Clientgeräte.
Schritt 3. Testen Sie, ob es funktioniert
Versuchen Sie, sich beim Server anzumelden, indem Sie Folgendes eingeben:
ssh user@board_ip
Wenn alles gut geht, werden Sie aufgefordert, die in Schritt 2 erstellte Passphrase einzugeben. Dies ist nicht das Benutzerkennwort, nach dem Sie in Schritt 3 gefragt wurden.
Wenn Sie die Eingabeaufforderung zur Eingabe des Benutzerkennworts sehen, stimmt etwas nicht. Fahren Sie nicht mit dem nächsten Schritt fort, bis dies funktioniert.
Schritt 4. Deaktivieren Sie die kennwortbasierte Anmeldung
Sobald jeder Benutzer und seine jeweiligen Clientgeräte über eigene öffentlich-private Schlüsselpaare und Passphrasen ihrer Wahl verfügen, benötigen Sie keine kennwortbasierte Anmeldung mehr. Es ist am besten, diese Methode zu deaktivieren. Wenn Sie diese Option aktiviert lassen, kann jeder Benutzer ohne das öffentlich-private Schlüsselpaar versuchen, das Kennwort des Benutzers @ board-ip zu erraten.
Bearbeiten Sie auf dem SSH-Server, der Karte, die Datei /etc/ssh/sshd_config
und ändern Sie:
#PasswordAuthentication yes
lesen:
PasswordAuthentication no
Beachten Sie, dass das #
nicht in der zweiten Zeile vorhanden ist und das yes
jetzt ist no
.
Starten Sie den SSH-Dienst auf dem Server neu, indem Sie:
sudo service ssh restart
Wenn dies nicht funktioniert, starten Sie die Karte neu.
Es ist vollbracht. Die Passphrase wird im Client wahrscheinlich von Gnome-Keyring zwischengespeichert, bis sich der Benutzer vom lokalen Computer abmeldet. Daher wird die Phass-Phrase nur einmal pro Sitzung abgefragt.
Was als nächstes kommt, ist eine andere Alternative. Sie müssen entweder 1 oder 2 tun.
Methode 2. Öffentlicher Schlüssel und Benutzerkennwort erforderlich
Referenz: /security/17931/possible-to-use-both-private-key-and-password-authentication-for-ssh-login
Schritt 1. Entfernen Sie die Passphrase für jede Client- und Benutzerkombination aus dem privaten Schlüssel, falls vorhanden
Verwenden Sie für jeden Benutzer auf jedem Client-Computer oder -Gerät den folgenden Befehl, um die vorhandene Passphrase für jedes öffentlich-private Schlüsselpaar zu entfernen:
ssh-keygen -p
Sie werden aufgefordert, den Speicherort für die Dateien anzugeben. Drücken Sie die Eingabetaste, um den Standardspeicherort zu übernehmen.
Wenn Sie eine Passphrase haben, werden Sie aufgefordert, diese einzugeben. Wenn Sie nicht zur Eingabe einer vorhandenen Passphrase aufgefordert werden, sind Sie fertig. Drücken Sie Ctrl+ C, um den Vorgang zu stoppen.
Andernfalls geben Sie die vorhandene Passphrase ein und fahren Sie fort.
Als nächstes werden Sie aufgefordert, eine Passphrase einzugeben. Drücken SieEnter zweimal, um die vorhandene Passphrase aus dem privaten Schlüssel zu entfernen.
Wenn Sie kein öffentlich-privates Schlüsselpaar haben, generieren Sie es mit dem folgenden Befehl. Sie werden aufgefordert, eine Passphrase hinzuzufügen, falls Sie eine benötigen:
ssh-keygen -t rsa
Wenn sich ein Benutzer von verschiedenen Clients (Laptop, Telefon usw.) aus anmelden muss, muss er diesen Vorgang für jeden Client wiederholen.
Schritt 2. Kopieren Sie den öffentlichen Schlüssel nur dann auf den Server, wenn der Schlüssel neu ist
Geben Sie auf Ihrem Client-Computer Folgendes ein:
ssh-copy-id -i ~/.ssh/id_rsa user@board_ip
Es wird nach dem Passwort des Benutzers auf dem Remote-Server gefragt. Denken Sie daran, dass die kennwortbasierte Anmeldung aktiviert sein muss, damit dies funktioniert.
Wiederholen Sie dies für alle Benutzer und alle Clientgeräte.
Schritt 3. Testen Sie, ob öffentliche Schlüssel verwendet werden
Versuchen Sie, sich beim Server anzumelden, indem Sie Folgendes eingeben:
ssh user@board_ip
Wenn alles gut geht, werden Sie nicht aufgefordert, ein Passwort oder eine Passphrase einzugeben. Das ist normal. Dies zeigt, dass der öffentliche Schlüssel ordnungsgemäß auf dem SSH-Server (der Karte) installiert ist und funktioniert. Wir werden die Einstellung so ändern, dass im nächsten Schritt erneut nach dem Passwort gefragt wird.
Schritt 4. Setup für öffentlichen Schlüssel und Passwort
Melden Sie sich beim SSH-Server (der Karte) an und bearbeiten Sie die /etc/ssh/sshd_config
Datei. Fügen Sie der Datei die folgende Zeile hinzu:
AuthenticationMethods publickey,password
Warnung: Stellen Sie sicher, dass das PasswordAuthentication
wie folgt aussieht:
#PasswordAuthentication yes
Dies ist das Standardverhalten. Sie können das #
am Anfang behalten oder entfernen . Wenn diese Einstellung jedoch no
zusammen mit der gerade hinzugefügten Zeile festgelegt ist, kann sich niemand mit dem Server anmelden ssh
. Wenn Sie gesperrt werden, müssen Sie physisch zum Remote-Server gehen, ihn an Tastatur, Monitor usw. anschließen und sich lokal anmelden und diese Datei bearbeiten, um das Problem zu beheben.
Warnung beenden
Starten Sie den SSH-Dienst auf dem Server neu, indem Sie:
sudo service ssh restart
Wenn dies nicht funktioniert, starten Sie die Karte neu.
Schritt 5. Testeinbruch
Suchen Sie einen neuen Computer oder melden Sie sich mit einem neuen Benutzernamen am Client-Computer an, z. B. user2. Dieser Benutzer sollte keine öffentlich-privaten Schlüsselpaare in seinem /home/$USER/.ssh/
Ordner haben. Wir werden so tun, als wäre user2 der Hacker, der das Passwort von user @ board_ip irgendwie herausgefunden hat, und versuchen, in dieses System zu ssh.
Geben Sie als Benutzer2 vom Client-Computer Folgendes ein:
ssh user@board_ip
Wenn Sie sich nur mit dem Passwort anmelden können, hat es nicht funktioniert. Jeder, der das Passwort hat oder es erraten kann, kann sich beim Board anmelden. Sie brauchen den Schlüssel nicht.
Wenn Sie eine erhalten permission denied
und die Anmeldung fehlschlägt, funktioniert die doppelte Authentifizierung von öffentlichem Schlüssel und Kennwort.
Hoffe das hilft