[Fli4l_dev] ssh-login mit public/private key - file format error beim private key file

lespocky at gmail.com lespocky at gmail.com
Mo Dez 9 06:45:58 CET 2019


Hallo Hans,

Am Montag, 9. Dezember 2019 01:42:26 UTC+1 schrieb Hans Bachner:
> tl;dr
> Das Login über ein Schlüsselpaar funktioniert, wenn ich den public key 
> in der Variablen SSHD_PUBLIC_KEY_x eintrage. Der Inhalt des 
> SSHD_PUBLIC_KEYFILE_x wird anscheinend falsch interpretiert.

Autsch'n.

> Alexander Dahl schrieb am 08.12.2019 um 09:08:
> > Hallo Hans,
> > 
> > Hans Bachner schrieb Samstag,  7. Dezember 2019, 15:45 (CET):
> >> Ich habe mit PuTTYgen ein Schlüsselpaar erzeugt, den public key in
> >> <config>/etc/ssh/ hinterlegt, als SSHD_PUBLIC_KEYFILE eingetragen und
> >> erfolgreich zum Router übertragen. Dort taucht er auch in
> >> /etc/ssh/authorized_keys auf, der Text sieht identisch zu dem im
> >> PuTTYgen Fenster aus.
> > 
> > Gut.
> > 
> >> Nur funktioniert das Login per Schlüssel nicht.
> >>
> >> Wenn ich in mkfli4 fürs Remote Update den privaten Schlüssel (.ppk)
> >> eintrage, erhalte ich beim SCP die Meldung:
> >>> Unable to load private key file "<kompletter Pfad zum .ppk>" (file format error)
> >> und werde nach dem Passwort gefragt.
> > 
> > Mit mkfli4l unter Windows kenne ich mich nicht aus, aber offenbar
> > erwartet er hier den private Key im PuTTY-Format.
> 
> Ja, offensichtlich. Ich habe ihn aber ohnehin mit PuTTYgen erzeugt.
> 
> > Hast Du mal versucht den nicht da einzutragen sondern mit pageant zu
> > laden? Das ist der SSH-Agent von PuTTY, damit brauch man nicht ständig
> > sein Passwort neu eingeben und dann auch in PuTTY o.ä. nicht extra eine
> > .ppk-Datei angeben.
> 
> Ich verwende den Pageant. Wenn ich aber in mkflil keinen private key 
> angebe, fragt mich der Build-Prozess, ob er das Passwort aus der 
> base.txt verwenden soll. Ablehnen und auch kein Passwort im folgenden 
> Dialog eingeben führt zum Abbruch.
> 
> Wenn ich die private key Datei (.ppk) angebe, sieht das 
> Filetransfer-Fenster des Build-Prozesses jetzt (mit dem richtigen pubic 
> key auf dem fli4l) so aus:
> 
> > SCP-Transfer
> > ============
> > 
> > to: flitest
> > 
> > Unable to load private key file "<kompletter Pfad und Dateiname>"  (file format error)
> > boot.msg                  | 0 kB |   0.5 kB/s | ETA: 00:00:00 | 100%
> > boot_s.msg                | 0 kB |   0.1 kB/s | ETA: 00:00:00 | 100%
> > boot_z.msg                | 0 kB |   0.1 kB/s | ETA: 00:00:00 | 100%
> > kernel                    | 408 kB | 408.0 kB/s | ETA: 00:00:04 |  17%
> > [...]
> usw. (auch die übrigen Dateien werden übertragen).
> 
> Mit dem key file hat er offenbar nach wie vor Probleme, mit der im 
> Pageant hinterlegten Kopie kann sich der Build Prozess aber offenbar 
> anmelden.

Das sieht mir irgendwie nach einem Problem mit mkfli4l unter Windows aus. Da kann ich weiter nichts zu sagen.

> >> Außerdem habe ich in PuTTY eine SSH-Verbindung definiert, die ebenfalls
> >> diesen .ppk verwenden soll. Die Definition ist identisch zu einigen
> >> anderen vordefinierten Verbindungen zu verschiedenen Rechnern mit
> >> CentOS, RHEL und OpenVMS, die allesamt einwandfrei funktionieren. Öffne
> >> ich die Verbindung zum fli4l, werde ich nach dem Benutzernamen sofort um
> >> das Passwort gefragt.
> >>
> >> Starte ich auf dem Router den Dropbear mit
> >>      dropbear -s -p 22
> >> (entspricht ALLOWPASSWORDLOGIN='no'), erhalte ich beim Login versuch die
> >> M;eldung, dass kein gemeinsames Authentifizierungsverfahren gefunden
> >> wird mit der Anmerkung "(server sent public key)" (zumindest sinngemäß).
> > 
> > Ja, das ist eine interessante Meldung. Möglicherweise können sich hier
> > Client und Server nicht einigen, weil die Sets unterstützter
> > Auth-Verfahrung disjunkt sind. Das einfachste, was Du hier probieren
> > kannst: die neueste PuTTY-Version installieren. (Das ist sowieso zu
> > empfehlen.)
> 
> Das scheint daran zu liegen, dass der im .pub File übertragene Schlüssel 
> auf dem fli4l in authorized_keys falsch eingetragen wird.
> 
> PuTTY ist auf dem aktuellen Stand (0.73).
> 
> Ich habe versuchsweise den gleichen public key zweimal auf den fli4l 
> übertragen: einmal in SSHD_PUBLIC_KEY_x und einmal als 
> SSHD_PUBLIC_KEYFILE_x.
> 
> Nach dem Reboot sieht die /.ssh/authorized_keys so aus:
> 
> > flitest 4.0.0-r55209-testing # cat /.ssh/authorized_keys
> > ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoY[...]QSbVkaWO4A= ecdsa-key-fli at home
> > ssh-dss AAAAE2VjZHNhLXNoY[...]QSbVkaWO4A=
> > flitest 4.0.0-r55209-testing #
> 
> d.h. der als Datei übertragene public key wird als ssh-dss Schlüssel 
> eingetragen anstatt als ecdsa-sha2-nistp256! Muss man den Schlüsseltyp 
> noch irgendwo extra definieren? Oder sollte ich für dieses Verhalten ein 
> Ticket im Bugtracker öffnen?

Urgs. Ja bitte. Das sollten wir mal versuchen nachzustellen. Und in Deiner Datei SSHD_PUBLIC_KEYFILE_x steht wirklich was anderes als nachher auf dem fli4l? Ich nehme an, Du hast da nichts drin editiert?

> Das war jedenfalls nicht der Grund für das Problem - der Typ des per 
> File übertragenen public keys wurde in authorized_keys falsch 
> eingetragen und passte daher nicht mehr zum private key.

Das kann ja nur sein, wenn irgendwer oder -was das geändert hat. Mich wundert das, weil ich davon ausgegangen wäre, dass das unverändert übernommen wird.

Grüße
Alex


Mehr Informationen über die Mailingliste Fli4l_dev