Die Passphrase, die für den privaten Schlüssel festgelegt werden kann, hängt nicht mit dem SSH-Server oder der Verbindung zu diesem zusammen. Das Festlegen einer Passphrase für den privaten Schlüssel ist lediglich eine Sicherheitsmaßnahme, die der Schlüsselbesitzer ergreifen kann, um den Zugriff Dritter auf seine Remote-Shell zu verhindern, falls der private Schlüssel gestohlen wird.
Leider können Sie Benutzer nicht zwingen, ihre privaten Schlüssel mit Passphrasen zu sichern. Manchmal sind ungeschützte private Schlüssel erforderlich, um den Zugriff auf den Remote-SSH-Server zu automatisieren. Eine gute Gewohnheit , die ich sehr empfehlen für solche Fälle ist es, die Nutzer zu beraten Hash der known_hosts - Datei (gespeichert in ~ / .ssh / known_hosts ), die Informationen über die entfernten Hosts der Benutzer eine Verbindung zu, mit dem folgenden Befehl hält:
ssh-keygen -H -f ~/.ssh/known_hosts
Selbst wenn ein Dritter Zugriff auf einen ungeschützten privaten Schlüssel erhält, ist es auf diese Weise äußerst schwierig herauszufinden, für welche Remote-Hosts dieser Schlüssel gültig ist. Das Löschen des Shell-Verlaufs ist natürlich obligatorisch, damit diese Technik einen beliebigen Wert hat.
Außerdem sollten Sie immer berücksichtigen, dass sich root nicht remote anmelden kann, indem Sie Folgendes in die Konfiguration Ihres SSH-Servers (sshd_config) einfügen:
PermitRootLogin no
Wenn Sie andererseits verhindern möchten, dass Benutzer Schlüssel zur Authentifizierung verwenden, aber stattdessen Kennwörter verwenden, sollten Sie Ihrer sshd_config Folgendes hinzufügen :
PasswordAuthentication yes
PubkeyAuthentication no
Geboren um zu reiten
quelle
Eine Abschwächung wäre die Verwendung des Google Authenticator PAM-Modul-Plugins. Normalerweise innerhalb der offiziellen Pakete erhältlich.
Dadurch wird 2FA über einen 6-stelligen Code auf Ihrem Smartphone verfügbar.
Anweisungen hier: Einrichten der Multi-Faktor-Authentifizierung für SSH unter Ubuntu 16.04
quelle
EINFACH erweitern Sie einfach das SSH-Protokoll, sodass der SSH-Client oder der SSH-Agent ein Flag meldet / setzt, um anzugeben, ob der ursprüngliche private Schlüssel verschlüsselt wurde oder nicht (möglicherweise kann die Serverseite sogar eine Abfrage stellen) - da die Clientseite sichtbar ist des privaten Schlüssels und fordert sogar bereits zur Eingabe der Passphrase auf, wenn der Schlüssel verschlüsselt ist.
quelle