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

Generieren Sie SSH-Schlüssel für die passwortlose Anmeldung in Ubuntu

SSH (Secure Shell) ist ein kryptografisches Netzwerkprotokoll, das zum Aufbau sicherer Verbindungen zwischen einem entfernten Client und einem Server unter Verwendung von TCP verwendet wird Protokoll für Sicherheit und Zuverlässigkeit.

SSH-basierte Verbindungen unterstützen verschiedene Authentifizierungsmethoden, einige davon sind :

  • Passwortbasierte Authentifizierung
  • Schlüsselbasierte Authentifizierung

Standardmäßig wird beim Erstellen einer neuen SSH-Verbindung zwischen zwei Computern die passwortbasierte Authentifizierung verwendet. Wenn Sie sich jedoch häufig von demselben Client aus bei einem Server anmelden, kann es umständlich und lästig sein, das Kennwort jedes Mal einzugeben, wenn Sie sich beim Server anmelden.

Dieses Tutorial stellt die andere alternative Authentifizierung für die Anmeldung beim Remote-Server unter Verwendung von öffentlichen Schlüsseln vor .

Schauen wir uns an, wie wir dies auf unseren speziellen Client- und Server-Rechnern einstellen können, die wir häufig verwenden, damit wir uns automatisch und sicher von diesem Rechner aus anmelden können!

Nach vorhandenen SSH-Schlüsseln auf dem Client-Rechner suchen

Der erste Teil befasst sich mit der Generierung eines Private-Public-Key-Paares im Client Maschine. Der öffentliche Schlüssel wird später auf den Server kopiert und zur Authentifizierung verwendet.

Stellen Sie vor dem Festlegen eines SSH-Schlüssels sicher, dass für diese Client-Server-Kombination noch keine Schlüssel vorhanden sind.

Lassen Sie uns dieses Bash-Skript ausführen, um zu überprüfen, ob die Datei existiert (Sie können dies alternativ direkt auf dem Terminal eingeben)

if test -f ~/.ssh/id_*.pub; then
    echo "Found"
else
    echo "Not Found"
fi

Wenn Sie „Not Found“ erhalten, bedeutet dies, dass keine solche Datei existiert und wir bereit sind, einen neuen Schlüssel für diese Verbindung zu erstellen.

Andernfalls können Sie direkt die vorhandenen Schlüssel verwenden und den nächsten Schritt überspringen. Aber wenn Sie die alten Schlüssel nicht verwenden möchten, können Sie die alten Schlüssel entfernen und neue generieren, indem Sie dem nächsten Schritt folgen.

Generieren Sie ein neues SSH-Schlüsselpaar für die Client-Server-Rechner

Der folgende Befehl generiert ein neues 4096 bits SSH-Schlüsselpaar mit Ihrer ID (kann alles Identifizierbare sein!) als Kommentar:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Nachdem Sie den Schlüsselort und die Passphrasen durch Ausführen dieses Befehls konfiguriert haben, wird jetzt der neue Schlüssel zusammen mit dem Schlüsselfingerabdruck für uns generiert.

Lassen Sie uns nun überprüfen, ob der private-öffentliche Schlüssel tatsächlich vorhanden ist, indem Sie ls verwenden .

ls ~/.ssh/id_*

Sie sollten die folgende Ausgabe erhalten :

/root/.ssh/id_rsa  /root/.ssh/id_rsa.pub

Das bedeutet, dass id_rsa ist Ihr privater Schlüssel und id_rsa.pub ist Ihr öffentlicher Schlüssel.

HINWEIS :Niemals Teilen Sie Ihren privaten Schlüssel über mehrere Maschinen hinweg. Aus diesem Grund haben Sie einen öffentlichen Schlüssel. So können wir denselben öffentlichen Schlüssel auf mehrere Server nach ssh kopieren unter Beibehaltung der zusätzlichen Sicherheit mit dem privaten Schlüssel auf Ihrem lokalen Rechner.

Kopieren Sie den öffentlichen Schlüssel auf den Server

Da wir unser SSH-Schlüsselpaar auf unserem Client haben, müssen wir den öffentlichen Schlüssel dorthin kopieren, um uns beim Remote-Server anmelden zu können.

Wir können scp verwenden um Dateien auf unseren Server zu kopieren, aber es gibt eine bessere Alternative für ssh Schlüssel mit ssh-copy-id .

Sie können ssh-copy-id installieren Verwenden Sie Ihren Paketmanager, falls dieser nicht verfügbar ist.

ssh-copy-id server_username@server_ip

Nach Eingabe des Passworts für den Server-Benutzernamen werden wir nun authentifiziert, um uns mit den öffentlichen Schlüsseln beim Server anzumelden.

Die Ausgabe sieht ungefähr so ​​aus:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/client_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
SERVER_USER@SERVER_IP's password: 


Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'SERVER_USER@SERVER_IP'"
and check to make sure that only the key(s) you wanted were added.

Das bedeutet, dass wir ssh verwenden können zu dieser bestimmten Maschine von unserem Client mit der zusätzlichen schlüsselbasierten Authentifizierung!

Um es zu testen, versuchen Sie es mit ssh Jetzt zum Server!

ssh server_user@server_ip

Potenzielle Probleme beheben

Aber einige von Ihnen erhalten möglicherweise immer noch die Passwortabfrage, zusammen mit der schlüsselbasierten Passphrase! Was ist los?

Ein möglicher Grund wird hier beschrieben. Es scheint, dass wir möglicherweise nicht die richtigen Berechtigungen für unsere ~/.ssh haben Verzeichnis auf dem Remote-Server . Der Inhalt der HOME Verzeichnis ~ , der ~/.ssh Verzeichnis und ~/.ssh/authorized_keys Datei darf nur von uns beschreibbar sein. Andernfalls erkennt es, dass andere Benutzer Zugriff erhalten können, und wird daher auch nach dem Passwort gefragt.

Lassen Sie uns zuerst die Berechtigungen unseres Home-Verzeichnisses überprüfen.

Da wir nur schreiben können, müssen wir die Berechtigungen für dieses Verzeichnis nicht ändern. Sehen Sie sich auf ähnliche Weise die Modi an und ändern Sie den Modus mit chmod .

Lassen Sie uns die Berechtigungen für diese Dateien und Verzeichnisse mit chmod -R ~/.ssh 700 ändern rekursiv.

Testen Sie es jetzt, um zu sehen, ob es funktioniert.

Debugging potenzieller Probleme – Teil 2

Wenn Sie es immer noch nicht zum Laufen bringen können, erwähnt dieser Thread, dass einige der Optionen in der ssh-Konfigurationsdatei möglicherweise deaktiviert sind.

Überprüfen Sie /etc/ssh/sshd_config auf dem Server um sicherzustellen, dass RSAAuthentication , PubkeyAuthentication und UsePAM Optionen sind nicht deaktiviert.

Stellen Sie außerdem sicher, dass Sie ausdrücklich PasswordAuthentication no festlegen in der Konfiguration, um die passwortbasierte Authentifizierung für unseren Benutzer zu deaktivieren.

Wie Sie sehen können, war dies tatsächlich der Fall für mich! Die PubKeyAuthentication war ebenfalls deaktiviert und forderte mich daher zur Eingabe des Passworts auf, da die Sitzung dies nicht als primären Authentifizierungsmodus verwendete!

Ich habe diese Zeile auskommentiert und ssh neu gestartet um Änderungen zu übernehmen.

sudo systemctl restart ssh

Jetzt hat die passwortlose Authentifizierung endlich für mich funktioniert! Hoffentlich haben Sie bis dahin auch eine Lösung gefunden.

Wir haben endlich ssh konfiguriert ohne Passwort zu arbeiten!

Schlussfolgerung

In diesem Tutorial haben wir Ihnen gezeigt, wie Sie ssh einrichten können Public-Key-basierte Authentifizierungsmethode und Anmeldung bei einem Server ohne Passwort!


Linux
  1. 3 Möglichkeiten, wie ich SSH für den Datenschutz konfiguriere

  2. So richten Sie SSH-Schlüssel ein

  3. So richten Sie SSH-Schlüssel unter Ubuntu 16.04 ein

  4. So richten Sie SSH-Schlüssel für die „kennwortlose“ SSH-Anmeldung unter Linux ein

  5. So richten Sie SSH-Schlüssel für die SSH-Anmeldung mit „öffentlichen/privaten Schlüsseln“ unter Linux ein

So richten Sie SSH-Schlüssel unter Ubuntu 18.04 ein

So richten Sie SSH-Schlüssel unter Ubuntu 20.04 ein

Passwortloser SSH-Login in 3 einfachen Schritten

Generieren Sie RSA-Schlüssel mit SSH mithilfe von PuTTYgen

So verbessern Sie die SSH-Sicherheit unter Ubuntu 18.04

WinSCP-Client für Ubuntu