Windows-to-Linux: Putty mit SSH und privatem / öffentlichem Schlüsselpaar

7

Ich habe ungefähr 3 Stunden damit verbracht, herauszufinden, wie ich mit Putty von meinem Windows-Computer aus eine Verbindung zu einer Linux-Box herstellen kann, ohne das Passwort senden zu müssen.

Dies stellt eine Verbindung zu einem Ubuntu-Server her, der OpenSSH verwendet. Der private Schlüssel ist SSH-2 RSA, 1024 Bit. Ich verbinde mich mit SSH2.

Ich bin bereits auf die häufigeren Probleme gestoßen:

  1. Putty hat den öffentlichen Schlüssel im "falschen Format" generiert. Ich habe dies korrigiert (wie in diesem Blog-Beitrag zu sehen ). Da ich jedoch noch nicht verbunden bin, kann ich nicht absolut bestätigen, dass diese Datei das richtige Format hat. Der Schlüssel befindet sich jetzt alle in einer einzelnen Zeile, und ich habe versucht, Zeilenumbrüche am Ende der Datei hinzuzufügen / zu entfernen. Ich habe auch einige Male versucht, öffentliche Dateien zu bearbeiten, um sicherzustellen, dass ich die manuelle Konvertierung nicht gestört habe. Trotzdem kann ich hier die Richtigkeit nicht überprüfen.
  2. Die Berechtigungen waren ebenfalls sofort falsch, was insbesondere bedeutet, dass die Datei zu viele Berechtigungen hatte. Ich musste das auch lösen und ich weiß, dass es darüber hinausgegangen ist, weil ich in /var/log/auth.log keinen verwandten Fehler mehr sehe .
  3. Ich habe sowohl Authorized_keys als auch Authorized_keys2 ausprobiert, falls der Server eine alte Version von OpenSSH hat, aber dies hat nichts geändert.
  4. Ich habe als Benutzer Zugriff. Nachdem diese Schlüsseldatei fehlgeschlagen ist, kann ich stattdessen mein Passwort eingeben

Die einzige verbleibende Information, die ich habe, ist, dass behauptet wird, ich hätte das angebliche Passwort falsch:

sshd[22288]: Failed password for zzzzzzz from zz.zz.zz.zz port 53620 ssh2

Trotzdem ist dies, soweit ich das beurteilen kann, nur ein fauler Versuch / Fang irgendwo, da ich glaube, dass es überhaupt kein Passwort gibt .

Ich sehe nichts anderes in einer der verwendeten / var / log-Dateien. Was könnte sonst noch falsch sein?

Johnny Kauffman
quelle
PuttyGen generiert den Schlüssel in genau dem richtigen Format für OpenSSH. Diese Seite, auf die Sie verlinken, zeigt Ihnen den harten Weg .
Zoredache

Antworten:

11
  • Generieren Sie Ihren Schlüssel mit PuttyGen.
  • Klicken Sie mit der rechten Maustaste in das Textfeld "Öffentlicher Schlüssel zum Einfügen ..." und wählen Sie select all
  • Klicken Sie erneut mit der rechten Maustaste und wählen Sie copy.
  • Stellen Sie eine Verbindung zu Ihrem Host her, bearbeiten .ssh/authorized_keysSie den Schlüssel, fügen Sie ihn ein und entfernen Sie alle anderen vorhandenen Elemente, wenn Sie versucht haben, diesem Video zu folgen.
  • Stellen Sie sicher, dass Ihr ~/.sshOrdner 0700mit istchmod 0700 ~/.ssh/
  • Ihre Datei "authorized_keys" sollte 0600so sein chmod 0600 ~/.ssh/authorized_keys.

Geben Sie hier die Bildbeschreibung ein

Zoredache
quelle
1
Du hast Recht. Ich habe es auf die harte Tour vermasselt (ich habe ssh-rsa weggelassen). Wenn Sie es aus dem Textfeld nehmen, wird der menschliche Fehler beseitigt. Ich hatte nicht einmal bemerkt, dass das Format in diesem Fenster anders war als der generierte öffentliche Schlüssel.
Johnny Kauffman
1

Das bedeutet, dass der Schlüsselaustausch nicht stattgefunden hat oder fehlgeschlagen ist.

Bitte laden Sie das CLI-Tool plink.exe herunter (dieselbe Stelle, an der Sie putty.exe heruntergeladen haben) und führen Sie ein Debugging durch

plink -v -i yourprivatekeyfile user@server

Sehen Sie, was es Ihnen sagt, zusätzlich zu dem, was der Server sagt.

Sie können dies in einem Powershell- oder Cmd-Fenster tun.

Wenn Sie Ihre öffentliche Standard-Kittdatei bereits generiert haben, können Sie sie mit konvertieren

ssh-keygen -i -f yourputtypubkeyfile> openssh.key

zu Ihren autorisierten Schlüsseln hinzugefügt werden

johnshen64
quelle
Ich hatte plink -v verwendet und es hat sicherlich schon früh bei der Diagnose geholfen, aber das letzte Problem stellte sich als Problem heraus, das nur auf der Serverseite protokolliert werden konnte. Ich bin ziemlich verärgert, dass mich die serverseitige Protokollierung so sehr im Stich gelassen hat. Ohne verfügbare Arbeitsbeispiele für einen öffentlichen Schlüssel zum Vergleich musste ich mich fragen, ob ich die Formatierung wirklich korrekt erhalten hatte oder nicht (ich hätte eine leere Datei verwenden und keinen Unterschied feststellen können). Darüber hinaus war die Behauptung des Fehlerprotokolls "ungültiges Passwort" einfach falsch. Vielleicht gibt es eine ausführlichere OpenSSH-Protokollierungsoption? ...
Johnny Kauffman
1

Generieren Sie ein Schlüsselpaar und speichern Sie den öffentlichen Schlüssel auf dem Server, wie von @Zoredache vorgeschlagen. Geben Sie ein Passwort zum Schutz des privaten Schlüssels ein und klicken Save private keyund speichern Sie den Schlüssel, z. B. in Ihrem Benutzerprofil. Entfernen Sie die Berechtigung für alle außer Ihnen aus der Schlüsseldatei.

Um sich mit Ihrem privaten Schlüssel authentifizieren zu können, müssen Sie ihn PuTTY zur Verfügung stellen. Laden Sie es entweder mit Pageantoder geben Sie es im PuTTY-Konfigurationsdialog unter ein Connection > SSH > Auth(klicken Sie auf Browse...und wählen Sie die gerade gespeicherte Datei aus).

Geben Sie im selben Dialogfeld Sessionin der Kategorie den Hostnamen oder die IP-Adresse des Hosts ein, zu dem Sie eine Verbindung herstellen möchten. Wechseln Sie in die Unterkategorie Loggingund klicken Sie All session outputdann auf Open.

Wenn das Terminalfenster geöffnet wird, klicken Sie mit der rechten Maustaste auf die Titelleiste und wählen Sie Event Log. Dieses clientseitige Protokoll ergänzt sich auth.logauf der Serverseite und soll Ihnen helfen, herauszufinden, was los ist.

Ansgar Wiechers
quelle