
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_keys
Dateien 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 puttygen
zum Generieren des Schlüssels. puttygen
stellt 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. Pageant
oder ssh-agent
kann 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.pub
wobei Beispiel der Name des Systems ist, zu dem der Schlüssel gehört.
Viele Implementierungen verwenden wieder authorized_keys
die 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. man
Weitere 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 .pub
auf den Server hochladen), aber beides kann funktionieren.