OpenSSH 디렉터리는 Windows 10의 Python 프로세스에서 액세스할 수 없습니다.

OpenSSH 디렉터리는 Windows 10의 Python 프로세스에서 액세스할 수 없습니다.

저는 최신 버전의 Windows 10과 Python 3.7을 실행하고 있습니다.

cmd와 PowerShell을 통해 c:\Windows\System32\OpenSSH의 내용을 볼 수 있고 정상적으로 ssh 명령을 실행할 수 있습니다.

그러나 Python 프로세스를 시작하면 이 파일이 표시되지 os.path.exists("c:\\Windows\\System32\\OpenSSH")않고 False. 그런 다음 하위 프로세스에서 cmd 또는 Powershell의 인스턴스를 시작하면 해당 디렉토리가 표시되지 않습니다.

프로세스 관리의 일부로 올바른 환경으로 새 셸을 인스턴스화하는 Python 종속성 관리 도구인 Pipenv를 사용하려고 합니다.

이로 인해 다음과 같은 동작이 발생합니다.

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>

다른 사용자들에게 확인해 보니 이 문제가 발생하지 않습니다.

모든 업데이트가 Windows에 적용되었는지 확인하고 OpenSSH 기능을 제거했다가 다시 추가해 보았습니다.

누군가가 이것을 디버깅하는 데 어떤 정보가 유용할지에 대한 힌트를 갖고 있다면 듣고 싶습니다.

답변1

이와 똑같은 문제가 있었고 이 스레드에서 해결책을 찾았습니다. https://stackoverflow.com/questions/41630224/python-does-not-find-system32

Windows는 실제로 SysWOW64를 찾고 있습니다. 이 문제를 해결하는 내 코드는

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])

관련 정보