Auf das OpenSSH-Verzeichnis kann von Python-Prozessen in Windows 10 nicht zugegriffen werden

Auf das OpenSSH-Verzeichnis kann von Python-Prozessen in Windows 10 nicht zugegriffen werden

Ich verwende das vollständig aktuelle Windows 10 und Python 3.7.

Ich kann den Inhalt von c:\Windows\System32\OpenSSH sowohl über cmd als auch über PowerShell sehen und den SSH-Befehl wie gewohnt ausführen.

Wenn ich jedoch einen Python-Prozess starte, ist diese Datei nicht sichtbar und os.path.exists("c:\\Windows\\System32\\OpenSSH")gibt zurück False. Wenn ich dann eine Instanz von cmd oder Powershell in einem Unterprozess starte, ist dieses Verzeichnis nicht sichtbar.

Ich versuche, Pipenv zu verwenden, ein Python-Tool zur Abhängigkeitsverwaltung, das als Teil seiner Prozessverwaltung eine neue Shell mit der richtigen Umgebung instanziiert.

Dies führt zu Verhaltensweisen wie:

C:\Users\micro>dir c:\Windows\System32\OpenSSH\ssh.exe
Volume in drive C is OS
Volume Serial Number is AEDD-9508

Directory of c:\Windows\System32\OpenSSH

28/09/2017  15:49           851,456 ssh.exe
            1 File(s)        851,456 bytes
            0 Dir(s)  175,094,468,608 bytes free

C:\Users\micro>pipenv run dir c:\Windows\System32\OpenSSH\ssh.exe
The system cannot find the file specified.

C:\Users\micro>

Ich habe bei den anderen Benutzern nachgefragt und sie haben dieses Problem nicht.

Ich habe sichergestellt, dass alle Updates auf Windows angewendet werden, und habe versucht, die OpenSSH-Funktion zu entfernen und erneut hinzuzufügen.

Wenn jemand einen Hinweis hat, welche Informationen für die Fehlerbehebung hilfreich sein könnten, würde ich mich sehr darüber freuen.

Antwort1

Hatte genau das gleiche Problem und habe die Lösung in diesem Thread gefunden: https://stackoverflow.com/questions/41630224/python-does-not-find-system32

Windows sucht tatsächlich in SysWOW64; mein Code zur Behebung dieses Problems war

system32 = os.path.join(os.environ['SystemRoot'], 'SysNative' if 
platform.architecture()[0] == '32bit' else 'System32')
listtest_path = os.path.join(system32, 'openSSH', 'ssh-keygen.exe')
subprocess.call([listtest_path])

verwandte Informationen