Einfache Frage zum öffentlichen/privaten SSH-Schlüssel

Einfache Frage zum öffentlichen/privaten SSH-Schlüssel

Ich versuche, dies zu lernen, anstatt einfach nur Anleitungen zu befolgen, damit ich geeignete Maßnahmen empfehlen kann, wenn Leute danach fragen (und das tun sie). Hier ist, was ich herausgefunden habe.

Generieren Sie zunächst beide Schlüssel mit einem Befehl wie diesem:

ssh-keygen -b 2048 -t rsa -C comment -f ~/.ssh/id_rsa

Anschließend schieben Sie den öffentlichen Teil des Schlüssels in die Datei authorized_keys2

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys2

(und dann chmod es auf 600 oder ähnlich)

Und Sie laden den privaten Schlüssel auf Ihren Computer herunter (id_rsa) und geben ihn in Putty ein, damit er gelesen und authentifiziert werden kann.

Sind dies die richtigen Schritte zum Einrichten dieser öffentlichen/privaten Schlüsselauthentifizierung für die passwortlose Anmeldung bei SSH?

Antwort1

Obwohl die von Ihnen beschriebenen Schritte funktionieren, gibt es ein Problem. Sie generieren das Schlüsselpaar auf dem Zielcomputer (Remotecomputer) und laden dann die private Schlüsseldatei auf Ihr lokales System herunter. Dies hat Sicherheitsimplikationen, die Sie nicht übersehen sollten:

  • Wenn die Fernbedienung bereits kompromittiert ist, hat möglicherweise jemand Ihre Passphrase abgegriffen.
  • Wenn das Remote-System in Zukunft kompromittiert wird, hat der Angreifer Zugriff auf Ihre private Schlüsseldatei (und kann sich den Luxus eines Offline-Brute-Force-Angriffs leisten, um zu versuchen, sie zu entschlüsseln).

Da Sie SSH-Schlüsselpaare verwenden, um (zu versuchen) einige der mit der Kennwortauthentifizierung verbundenen Probleme zu lösen, möchten Sie normalerweise folgendermaßen vorgehen:

  • Generieren Sie das Schlüsselpaar auf Ihrem lokalen System. Idealerweise wird der private Schlüssel (a) niemals auf einem gemeinsam genutzten Dateisystem (z. B. NFS-Home-Verzeichnis) gespeichert und (b) niemals auf einem Computer gespeichert, der Remote-Logins zulässt.

  • Veröffentlichen Sie den öffentlichen Schlüssel weithin. Ich bewahre meine öffentlichen Schlüssel auf einer Website auf, damit ich sie jederzeit abrufen kann, wenn ich sie brauche. Legen Sie den öffentlichen Schlüssel in den entsprechenden authorized_keysDateien auf den Systemen ab, mit denen Sie eine Verbindung herstellen.

Wenn Sie besonders paranoid sind, können Sie Ihren privaten Schlüssel auf einem USB-Stick speichern und diesen nur verwenden, um den Schlüssel in ein laufendes Programm zu laden ssh-agent. An diesem Punkt benötigen Sie die eigentliche Schlüsseldatei nicht mehr.

Antwort2

Es ist möglicherweise besser, den Schlüssel auf den Clientsystemen zu generieren. Sie erhalten möglicherweise eine größere Datei mit autorisierten Schlüsseln, aber es ist einfacher, ein kompromittiertes System zu deaktivieren. Wenn Sie den privaten Schlüssel des Servers migrieren, müssen Sie den Schlüssel neu generieren und auf alle Clientsysteme migrieren. Jeder Client sollte seinen eigenen Schlüssel haben.

Putty verwendet puttygenzum Generieren des Schlüssels. puttygenstellt außerdem den öffentlichen Schlüssel im richtigen Format zum Einfügen in das Clientsystem bereit. Es ist am besten, den Schlüssel mit einer Passphrase zu schützen, wenn er für den Anmeldezugriff verwendet wird. Pageantoder ssh-agentkann verwendet werden, um den ungeschützten Schlüssel im Speicher zu halten, sodass die Passphrase nicht bei jeder Verbindung erneut eingegeben werden muss.

Sobald Sie einen Schlüssel hinzugefügt und den Schutz eingerichtet haben, können Sie weitere Schlüssel hinzufügen, ohne die Berechtigungen zurücksetzen zu müssen. Normalerweise lade ich den öffentlichen Schlüssel vom System mit einem Namen wie hoch, example.pubwobei Beispiel der Name des Systems ist, zu dem der Schlüssel gehört.

Viele Implementierungen verwenden wieder authorized_keysdie Schlüsseldatei. Diese Datei kann verwendet werden, um das System einzuschränken, von dem der Schlüssel akzeptiert wird, die Ausführung eines Befehls zu erzwingen, den Zugriff zu beschränken und andere Dinge. manWeitere Einzelheiten finden Sie auf der Seite.

In manchen Fällen kann es sinnvoll sein, mehrere Schlüssel auf dem Client-System zu haben. Dies kann beispielsweise zur Unterstützung von Batch-Prozessen verwendet werden, die mit Schlüsseln ohne Kennwort ausgeführt werden.

Antwort3

Das sieht gut aus. Viele Leute würden es in die entgegengesetzte Richtung machen (den Schlüssel lokal generieren und ihn dann .pubauf den Server hochladen), aber beides kann funktionieren.

verwandte Informationen