O diretório OpenSSH não pode ser acessado por processos Python no Windows 10

O diretório OpenSSH não pode ser acessado por processos Python no Windows 10

Estou executando o Windows 10, totalmente atualizado, e o Python 3.7.

Posso ver o conteúdo de c:\Windows\System32\OpenSSH por meio do cmd e do PowerShell e posso executar o comando ssh normalmente.

Porém, se eu iniciar um processo Python, esse arquivo não fica visível, os.path.exists("c:\\Windows\\System32\\OpenSSH")retorna False. Se eu iniciar uma instância do cmd ou do Powershell em um subprocesso, esse diretório não ficará visível.

Estou tentando usar o Pipenv, uma ferramenta de gerenciamento de dependências do Python, que instanciará um novo shell com o ambiente correto como parte do gerenciamento de processos.

Isso resulta em comportamentos como:

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>

Verifiquei com outros usuários e eles não têm esse problema.

Garanti que todas as atualizações sejam aplicadas ao Windows e tentei remover e adicionar novamente o recurso OpenSSH.

Se alguém tiver uma dica sobre quais informações seriam úteis para depurar isso, eu adoraria ouvi-la.

Responder1

Tive exatamente o mesmo problema e encontrei a solução neste tópico: https://stackoverflow.com/questions/41630224/python-does-not-find-system32

Na verdade, o Windows está procurando no SysWOW64; meu código para corrigir isso foi

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

informação relacionada