Я использую Windows 10, и мне нужно использовать узел перехода, чтобы добраться до моих серверов Linux. Таким образом, я настроил свой .ssh\config
вот так:
Host jumphost
HostName jumphost.server.local
Host server*.server.local
ProxyCommand ssh jumphost netcat -w 120 %h %p
Но когда я бегу ssh server01.server.local -v
(тире-v для подробного) Я получаю следующую ошибку:
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
Согласно эта ошибка, исправление заключается в использовании полного пути. Итак, это правильная строка в .ssh/config
:
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe jumphost netcat -w 120 %h %p
Для дальнейшего развития см. Этот выпуск: https://github.com/microsoft/vscode-remote-release/issues/18
ProxyCommand ssh.exe -q -W %h:%p yyy
Бег ssh -vvv XXX
показывает:
debug3: spawning "C:\\Windows\\System32\\OpenSSH\\ssh -q -W XXX:22 YYY"
CreateProcessW failed error:2
posix_spawn: No such file or directory
В соответствии с CreateProcess
документ в MSDN, я думаю posix_spawn
звонит CreateProcess
таким образом, что lpApplicationName
аргумент должен быть точным и абсолютным путем. После указания .exe
суффикс, вроде бы исправлено.
У меня такая же ошибка, но это из-за того, что для переменной среды DISPLAY установлено какое-то значение. Как только вы сбросите эту переменную среды, ошибка исчезнет.
Эта проблема связана с ошибкой в реализации OpenSSH для Windows. Эта ошибка исправлена в версии 8.1.0.0. Подробные инструкции по исправлению версии можно найти Вот
Поскольку netcat недоступен в системе по умолчанию, следующие две записи в .ssh / config помогут (при условии, что имя локального пользователя и имя удаленного пользователя различны).
login.bar
: система для входа
jump.bar
: jumphost
<username>
: имя удаленного пользователя на login.bar и jump.bar (если они разные, требуется <jumpuser> @ jump.bar). Если вы опустите <username> @ перед jump.bar, будет использовано локальное имя пользователя.
а)
Host foo
User <username>
HostName login.bar
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -q -X -W %h:%p <username>@jump.bar
б)
Host foo
User <username>
HostName login.bar
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -Y <username>@jump.bar -W %h:%p
В обоих случаях войдите в login.bar с помощью: ssh foo