Was bedeutet dieser SSH-Fehler?


9

Dies ist mein letzter Ausweg. Ich habe hier stundenlang versucht, das Problem herauszufinden.

Hier ist der Deal: Ich habe meinen privaten Schlüssel von Maschine 1 auf Maschine 2 kopiert. Maschine Nr. 1 kann mit meinem öffentlichen Schlüssel über ssh eine Verbindung zu einem Server herstellen, aber Maschine Nr. 2 gibt die folgende Ausgabe aus, wenn versucht wird, eine Verbindung zum Server herzustellen:

$ ssh -vvv -i /home/kevin/.ssh/kev_rsa user@192.168.1.244 -p 22312
OpenSSH_5.3p1 Debian-3ubuntu6, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 192.168.1.244 [192.168.1.244] port 22312.
debug1: Connection established.
debug3: Not a RSA1 key file /home/kevin/.ssh/kev_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace

...


Permission denied (publickey).

Es gibt offensichtlich mehr Debug-Ausgaben, die ich weggelassen habe, und ich kann sie auf Anfrage bereitstellen. Ich bin jedoch überzeugt, dass meine private Schlüsseldatei nicht gefällt.

Ich hatte auch den Verdacht, dass es damit zu tun hat, wie ich es von Maschine 1 auf Maschine 2 kopiert habe. Ich habe den Text vom privaten Schlüssel auf ein Flash-Laufwerk kopiert / eingefügt. Dies könnte jedoch das Problem sein, wenn ich diese Methode in einer anderen funktionierenden privaten Schlüsseldatei dupliziert und einen Unterschied zum Original gemacht habe, zum kopierten / eingefügten, sind sie identisch.

Ich habe damit zu kämpfen. Wenn ich nur ein bisschen mehr Informationen darüber bekommen könnte, warum mein Schlüssel nicht gefällt, könnte ich ihn sicher reparieren. Hat jemand irgendwelche Ideen dazu? Gibt es irgendwo Metadaten, die ssh mitteilen, dass eine Datei tatsächlich ein RSA-Schlüssel ist?


Und was sagt /var/log/auth.logder Server?
womble

Zur Verdeutlichung stellt der öffentliche Schlüssel von Computer 1 eine Verbindung zum Server her. Der private Schlüssel von Computer 1, der auf Computer 2 ausgeführt wird, stellt keine Verbindung zum Server her.
Dru

Ich habe auf beiden Computern das gleiche Schlüsselpaar und der öffentliche Schlüssel befindet sich auf dem Server. Ich habe die Schlüssel vom Client-Computer 1, der keine Probleme mit der Verbindung zum Server hat, hier auf meinen Heimcomputer (Computer 2) kopiert, auf dem dieses Authentifizierungsproblem auftritt.
Kevin

@womble, leider kann ich nicht auf den Server zugreifen, wenn ich das herausfinden kann, werde ich in der Lage sein, direkt in ssh. Ahh, Ironie ...;)
Kevin

Was sind die Betriebssysteme auf den beiden Client-Computern? Könnte die Übertragung des privaten Schlüssels die Zeilenenden oder den eingeführten Text (möglicherweise Leerzeilen oder Leerzeichen) vor der Eröffnungszeile verschoben haben?
Stobor

Antworten:


7

Nach meiner Erfahrung sind die beiden häufigsten schlüsselbasierten Authentifizierungsfehler

  1. Unangemessen breite Berechtigungen für das $HOME/.sshVerzeichnis
  2. Ein Fehler beim Kopieren des öffentlichen Schlüssels auf das Remote-System

Dateiberechtigungen

OpenSSH unternimmt viel, um Sie vor sich selbst zu schützen. Dies wirkt sich am meisten auf den Benutzer aus, indem strenge Einschränkungen für den Zugriff auf Ihren lokalen SSH-Ordner erzwungen werden. Sie möchten wirklich nur, dass Sie und nur Sie auf das Verzeichnis zugreifen. Nun, und jeder mit uid = 0, aber daran führt kein guter Weg vorbei. Sie müssen also einfach Ihre Berechtigungen ändern: chmod -R go-rwx ~/.sshDadurch werden allen Benutzern außer dem Eigentümer, dh Ihnen , Lese-, Schreib- und Ausführungsrechte für alle Dateien unter dem Verzeichnis .ssh entzogen .

Probleme mit autorisierten Schlüsseln

Die Datei, die Ihren öffentlichen Schlüssel enthält, muss normalerweise $HOME/.ssh/authorized_keysin ein ganz bestimmtes Formular passen, damit SSH versteht, wie der private Schlüssel akzeptiert wird. Jeder Schlüssel muss aus mindestens 2 Feldern bestehen

  1. Art des verwendeten Schlüssels (RSA, DSA, RSA1 usw.)
  2. Schlüssel

Jeder Schlüssel muss zusammen mit all seinen Optionen und Komponenten in dieser Datei pro Zeile aufgeführt sein. Da die Tasten in der Regel sehr lang sind, werden sie häufig umbrochen und als zwei Zeilen auf Ihrem Terminal angezeigt. Dies führt manchmal zu Chaos beim Versuch, zu kopieren / einzufügen, da manchmal eine oder mehrere Zeilenumbrüche dort eingefügt werden, wo sich der Schlüssel auf Ihrem Bildschirm befindet. Das Beheben dieses Problems kann für einen Shell-Anfänger etwas schwieriger sein.

Ausführen versuchen
wc -l ~/.ssh/authorized_keys
Hiermit wird die Anzahl der Zeilen in der Datei ausgedruckt. Vergleichen Sie diese Anzahl mit der Anzahl der Schlüssel, die Sie in der Datei erwarten. Wenn Sie nur diesen einen Schlüssel akzeptieren, können Sie auch einfach eine Kopie der öffentlichen Schlüsseldatei erstellen, da diese das gleiche Format wie Ihre autorisierte Schlüsseldatei hat. So etwas wie
scp -p ~/.ssh/kev_rsa.pub remotehost:~/.ssh/authorized_keys
oder, wenn Sie Ihren öffentlichen Schlüssel auf demselben System haben, können Sie dies tun
cat ~/.ssh/kev_rsa.pub >> ~/.ssh/authorized_keys

Überprüfen Sie außerdem in der Protokolldatei auf dem Remote-Host, ob dort Fehler gemeldet werden. Die Dateien werden höchstwahrscheinlich entweder /var/log/secure.logoder sein /var/log/auth.


1
Hallo, vielen Dank für Ihre Bemühungen hier. Das weiß ich zu schätzen. Es ist definitiv kein Berechtigungsproblem. Ich habe überprüft, ob die Berechtigungen korrekt sind. (Ich hätte das als Einschränkung hinzufügen sollen). Obwohl ich momentan nicht auf die Originalschlüssel zugreifen kann, habe ich den Prozess, mit dem ich den von mir verwendeten Schlüssel kopiert habe, dupliziert. Ich habe sogar eine md5sum gemacht, um zu überprüfen, ob die Dateien identisch sind. Sinn ergeben?
Kevin

1
Und wieder kann ich nicht auf den Server zugreifen. Art des ganzen Problems hier ...;)
Kevin

@Scott: make a copy of the private key filesollte öffentlicher Schlüssel sein (wie in Ihren Beispielen gezeigt)
mlp

0

Sie müssen jedoch wahrscheinlich ein neues Schlüsselpaar generieren, damit Computer 2 eine Verbindung zum Server herstellen kann. Oft listet der öffentliche Schlüssel den Benutzer- und Computernamen derjenigen auf, die sie generiert haben. Dies sollte in Ihrer Datei "authorized_keys" auf dem Server ersichtlich sein.


2
Ich hatte den Eindruck, dass diese ignoriert werden, dass es sich lediglich um Kommentare handelt, die Ihnen beim Anzeigen autorisierter Schlüssel helfen, sie zu identifizieren. Und trotzdem habe ich die Schlüssel einfach kopiert / eingefügt. Sie sind also identisch. Ich bezweifle ernsthaft, dass es Ihren Hostnamen überprüft. Wenn es so wäre, könnte ich das leicht ändern. Was zum Teufel, ich werde es trotzdem versuchen ...
Kevin

0

Die von Ihnen angegebenen Debug-Meldungen bedeuten, dass eine Datei mit privatem Schlüssel unter der Annahme gelesen wird, dass es sich tatsächlich um eine Datei mit öffentlichem Schlüssel / autorisiertem Host handelt. Dies ist möglicherweise kein schwerwiegender Fehler (ich erhalte solche Meldungen auch für funktionierende Verbindungen). Sagt es etwas über "Angebot" oder "Wir haben gesendet"?


-3

Versuchen Sie, die SSH-Konfigurationsdateien zwischen den beiden Servern zu vergleichen.

dh. so etwas wie cat / etc / sshd_config


Ich hätte klarer sein sollen. Es gibt zwei Clients, einen Server. Ich kann nicht auf den Server oder den anderen Clientcomputer zugreifen. Ich werde in der Lage sein, auf den Server zuzugreifen, sobald sich dieser verdammte Schlüssel authentifiziert;)
Kevin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.