derhoeppi
Goto Top

Windows Powershell OpenSSH Client auto accept fingerprints

Hallo,

wenn ich mich in meinen Powershell Skript zu einem SSH Host verbunden habe, habe ich dafür die RenciSSH. dll im Skipt eingebunden. Mit Windows 10 1803 hat der OpenSSH Client sein Beta Stadium verlassen, so dass ich gerne mal mit diesem Testen möchten, ob ich die RenciSSH.dll ablösen kann. Bereits kurz nach dem Start habe ich jedoch für das Skripten ein Problem. Die Fingerprints der einzelnen Hosts fehlt in der Datei known-hosts des OpenSSH Clients.
Hat schon jemand von euch eine Möglichkeit gefunden, die SSH Fingerprints automatisch zu akzeptieren auch wenn sie sich ändern?

Content-ID: 394507

Url: https://administrator.de/contentid/394507

Ausgedruckt am: 24.11.2024 um 02:11 Uhr

137846
137846 03.12.2018 aktualisiert um 09:54:47 Uhr
Goto Top
Stichwort StrictHostKeyChecking=No führt dich zum Ziel, wenn auch mit Koppschüttel.
NetzwerkDude
NetzwerkDude 03.12.2018 um 09:52:35 Uhr
Goto Top
https://superuser.com/questions/311886/where-is-the-known-hosts-file-for ...

Aber wenn du schon so eine kamikaze Lösung des automatischen akzeptieren bevorzugst, nimm gleich telnet, ist noch pflegeleichter :-P
erikro
erikro 03.12.2018 um 09:54:15 Uhr
Goto Top
Moin,

für mich klingt die Frage ungefähr so: "Kennt jemand eine Möglichkeit, dem Einbrecher mitzuteilen, dass der Schlüssel nicht mehr unter der Fußmatte liegt, sondern auf dem Türrahmen?"

Liebe Grüße

Erik
derhoeppi
derhoeppi 03.12.2018 um 10:08:01 Uhr
Goto Top
Tja ganz so leicht ich es nicht. Mein Problem ist, dass das Skript eine GUI bietet, bei dem es eigentlich keine Consolenausgabe geben soll. Das bedeutet ich müsste die Meldung vom Fingerprint abfangen und via Messagebox ausgeben. Ansonsten könnte ich die Meldung nicht bestätigen. Deshalb das akzeptieren des Keys. Die Systeme auf die Zugegriffen wird, sind in meiner Hoheit von daher ist das Risiko geringer.

StrictHostKeyChecking=No

Funktioniert zumindest unter Windows 10 1803 noch nicht. Den Parameter kennt er nicht. Ich möchte in der known-hosts aber auch nicht manuell Einträge vornehmen.
137846
137846 03.12.2018 aktualisiert um 10:11:40 Uhr
Goto Top
Zitat von @derhoeppi:
StrictHostKeyChecking=No

Funktioniert zumindest unter Windows 10 1803 noch nicht. Den Parameter kennt er nicht. Ich möchte in der known-hosts aber auch nicht manuell Einträge vornehmen.
Lach face-big-smile, das sollte dich eigentlich anspornen selbst danach zu googeln das das kein Parameter ist den du direkt angeben kannst sollte doch klar sein, da ist ja erstens kein Dash vor und die Syntax entspricht ja niemals Powershell! Immer diese Copy n Paste Generation ...
erikro
erikro 03.12.2018 um 10:29:13 Uhr
Goto Top
Moin,

Zitat von @derhoeppi:

Tja ganz so leicht ich es nicht. Mein Problem ist, dass das Skript eine GUI bietet, bei dem es eigentlich keine Consolenausgabe geben soll.

Und?

Das bedeutet ich müsste die Meldung vom Fingerprint abfangen und via Messagebox ausgeben. Ansonsten könnte ich die Meldung nicht bestätigen.

Genau das heißt es. Also ran an die Tasten und programmieren. Das ist doch wirklich nicht schwer.

Deshalb das akzeptieren des Keys.

Weil Du zu faul bist ein paar Zeilen Code mehr zu schreiben?

Die Systeme auf die Zugegriffen wird, sind in meiner Hoheit von daher ist das Risiko geringer.

Ahja, weil Du die Systeme administrierst, ist ein Man in the Middle Angriff unwahrscheinlich? Wenn ich das hier lese, dann würde ich das Risiko als sehr hoch einstufen. face-wink

Liebe Grüße

Erik
derhoeppi
derhoeppi 03.12.2018 um 10:50:32 Uhr
Goto Top
Schade - das ich solche Antworten lese! Ohne meine Umgebung zu kennen - eine Einschätzung zum Risiko zu geben :kopfschüttel! Demnächst überlege ich mir zweimal, ob ich in diesem Forum eine Frage stelle. Schließlich sollte (und so habe ich Administrator.de kennengelernt) das Forum eine Basis sein um solche Fragen zu stellen.

Bei answer hab ich mich vertan. Ich habe vor dem Schrieben des Beitrags in den Ubuntu Manuals gelesen. Ab Version 18.04 gibt es dort eine Parametererweiterung StrictHostKeyChecking=accept-new. Diesen kann ich über die Powershell nicht setzen. Wenn ich StrictHostKeyChecking=No setzten möchte, benötigt es vorher den Host in der Datei. Da ich Windows 10 1803 nutze, kann ich nicht sagen, wie aktuell die Implementierung vom OpenSSH Client ist - ob den Microsoft mitpatched oder ob es nur mit einem Featureupgrade eine neue Version gibt.

Dank der wirklich glorreichen Antworten werde ich euch nicht weiter zu dem Thema behelligen.
erikro
erikro 03.12.2018 um 10:55:36 Uhr
Goto Top
Moin,

Zitat von @derhoeppi:
Schade - das ich solche Antworten lese!

Schade, dass Du kritikunfähig bist.

Ohne meine Umgebung zu kennen - eine Einschätzung zum Risiko zu geben :kopfschüttel!

Und ich schüttle den Kopf, wenn man nicht erkennt, dass man ein sehr hohes Risiko eines Man in the Middle Angriffs eingeht, wenn man keys ohne weiter Prüfung akzeptiert "auch wenn sie sich ändern". Dann lass die keys doch einfach ganz weg. Ist einfacher.

Liebe Grüße

Erik
derhoeppi
derhoeppi 03.12.2018 um 11:10:57 Uhr
Goto Top
Problem ist das deine Äußerungen nicht der Lösungsfindung dienen, sondern SmallTalk sind. Kritik kann ich sehr wohl vertragen - es kommt jedoch auf die Art und Weise der Kritik an. Plakative Antworten auf Fragen zu Problemen ist aus meiner Sicht der falsche Weg innerhalb der Community. Eine Nachfrage, weshalb ich das mache und darauf Bezug zu nehmen oder eine Alternative vorschlagen, wäre der bessere Weg. Aber es soll jeder machen wie er denkt!
137846
137846 03.12.2018 aktualisiert um 12:07:57 Uhr
Goto Top
Diesen kann ich über die Powershell nicht setzen.
Ist ja auch soooo schwer ...
 ssh -o "StrictHostKeyChecking=No" -i .ssh\id_rsa user@192.168.1.20
137846
Lösung 137846 03.12.2018 aktualisiert um 12:42:08 Uhr
Goto Top
Und wenn man das für alle Verbindungen auf der Kiste nicht immer als Option setzen will erstellt man eine Datei unter
%userprofile%\.ssh\config
und trägt dort

StrictHostKeyChecking no

ein. Fertig, Affe tot. Auch wenn heute kein Freitag ist.

Gruß A.

Wenns das dann war, noch den Haken dran. Danke.

p.s. hier noch der Beweis (bsp. mit PS Core 6.1.1) das das lüppt, wenn du immer noch ungläubig sein solltest:

screenshot

Weiteres:
https://docs.microsoft.com/de-de/powershell/scripting/core-powershell/ss ...
derhoeppi
derhoeppi 03.12.2018 aktualisiert um 12:49:43 Uhr
Goto Top
Danke answer.

Ich lass es an dieser Stelle mit dem von Windows integrierten OpenSSH Client sein. In der Zwischenzeit habe ich mir die Powershell 6 angesehen, weil ich es, unabhängig von dem Fingerprint Handling, nicht geschafft habe, die SSH Session in ein Session Objekt zu packen, so dass ich zwischen dem lokalen Rechner auf dem das Skript läuft und dem remoten hin und herspringen kann. Ich könnte zwar sicherlich mit Invoke-Command arbeiten, aber dann bräuchte ich das Session Objekt nicht und würde immer wieder eine neue Verbindung aufbauen.
Diese Lösung habe ich jedoch in meiner alten Version. Vielleicht schau mich mir noch das Modul PoshSSH an. Vielleicht bin ich damit besser dran. Meine Intention war jedoch, dass ich mein Skript auf allen aktuellen Windows 10 Desktops ausführen kann ohne ein PS-Modul oder die RenciSSH.dll verteilen muss.