J'utilise Windows10 et je dois utiliser un jumphost pour accéder à mes serveurs Linux. J'ai donc configuré mon .ssh\config
ainsi:
Host jumphost
HostName jumphost.server.local
Host server*.server.local
ProxyCommand ssh jumphost netcat -w 120 %h %p
Mais quand je lance ssh server01.server.local -v
(tiret-v pour verbeux) J'obtiens l'erreur suivante:
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
Selon ce bug , le correctif consiste à utiliser un chemin complet. C'est donc la ligne correcte dans le .ssh/config
:
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe jumphost netcat -w 120 %h %p
Pour plus d'informations, consultez ce problème: https://github.com/Microsoft/vscode-remote-release/issues/18
ProxyCommand ssh.exe -q -W %h:%p yyy
Fonctionnement ssh -vvv XXX
montre:
debug3: spawning "C:\\Windows\\System32\\OpenSSH\\ssh -q -W XXX:22 YYY"
CreateProcessW failed error:2
posix_spawn: No such file or directory
Selon CreateProcess
document sur MSDN, je suppose que posix_spawn
appelle CreateProcess
d'une manière telle que l'argument lpApplicationName
doit être un chemin exact et absolu. Après avoir spécifié le .exe
suffixe, il semble être corrigé.
J'ai eu la même erreur mais c'était à cause de la variable d'environnement DISPLAY définie sur une certaine valeur. Une fois que vous avez désactivé cette variable d'environnement, l'erreur a disparu.
Étant donné que netcat n'est pas disponible sur un système par défaut, les deux entrées suivantes dans le fichier .ssh/config feront l'affaire (en supposant que le nom d'utilisateur local et le nom d'utilisateur distant sont distincts).
login.bar
: système pour se connecterjump.bar
: jumphost<username>
: nom d'utilisateur distant sur login.bar et jump.bar (s'ils sont distincts <jumpuser> @ jump.bar est nécessaire). Si vous omettez <username> @ devant jump.bar, le nom d'utilisateur local est pris.
une)
Host foo
User <username>
HostName login.bar
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -q -X -W %h:%p <username>@jump.bar
b)
Host foo
User <username>
HostName login.bar
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -Y <username>@jump.bar -W %h:%p
Dans les deux cas, connectez-vous à login.bar avec: ssh foo