Eu uso o Windows10 e preciso usar um jumphost para chegar aos meus servidores Linux. Assim eu configurei meu .ssh\config
like assim:
Host jumphost
HostName jumphost.server.local
Host server*.server.local
ProxyCommand ssh jumphost netcat -w 120 %h %p
Mas quando executo ssh server01.server.local -v
(dash-v para verbose), recebo o seguinte erro:
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
debug1: Reading configuration data C:\\Users\\admin/.ssh/config
debug1: C:\\Users\\admin/ssh/config line 70: Applying options for server*.server.local
debug1: Executing proxy command: exec ssh jumphost netcat -w 120 server01.server.local 22
CreateProcessW failed error:2
posix_spawn: No such file or directory
De acordo com este bug , a correção é usar um caminho completo. Portanto, esta é a linha correta no
.ssh/config
:Para mais desenvolvimento, consulte este problema: https://github.com/microsoft/vscode-remote-release/issues/18
TL;DR
O
ProxyCommand
deve invocar ssh com.exe
extensão, por exemplo:A longa (?) história
Espetáculos de corrida
ssh -vvv XXX
:De acordo com o
CreateProcess
documento no MSDN, acho queposix_spawn
está chamandoCreateProcess
de uma maneira que olpApplicationName
argumento deve ser o caminho exato e absoluto. Depois de especificar o.exe
sufixo, parece ser corrigido.Eu recebi o mesmo erro, mas foi por causa da variável de ambiente DISPLAY definida para algum valor. Depois de desdefinir essa variável de ambiente, o erro desapareceu.
Este problema tem a ver com um bug na implementação do OpenSSH Windows. Este bug foi corrigido com a versão 8.1.0.0. Instruções detalhadas sobre como corrigir a versão podem ser encontradas aqui
Como o netcat não está disponível em um sistema padrão, as duas entradas a seguir no .ssh/config farão o truque (assumindo que o nome de usuário local e o nome de usuário remoto sejam distintos).
login.bar
: sistema para loginjump.bar
: jumphost<username>
: nome de usuário remoto em login.bar e jump.bar (se eles forem distintos <jumpuser>@jump.bar é necessário). Se você omitir <username>@ na frente de jump.bar, o nome de usuário local será usado.a)
b)
Em ambos os casos, faça login no login.bar com:
ssh foo