Невозможно использовать ssh через узел перехода с помощью ProxyCommand в Windows 10

Мой файл конфигурации выглядит следующим образом (я пытаюсь напрямую ssh в foo):

Host foo
    HostName <ip>
    User <username>
    ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -q -W %h:%p jump

Host jump
    HostName <ip>
    User <username>
    ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -q -W %h:%p bar

Host bar
    HostName <ip>
    User <username>
    Port <num>

Кроме того, я объединил свой id_rsa.pub ключ с authorized_keys серверов bar, jump и foo. Когда я запускаю ssh -J foo jump bar , я получаю сообщение об ошибке CreateProcessW failed error: 2 posix_spawn: Нет такого файла или каталога . Когда я пробую ssh foo -v , я получаю следующее:

OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
debug1: Reading configuration data C:\\Users\\CCL/.ssh/config
debug1: C:\\Users\\CCL/.ssh/config line 7: Applying options for foo
debug1: Executing proxy command: exec C:\\Windows\\System32\\OpenSSH\\ssh.exe -q -W <jump_ip> jump
debug1: identity file C:\\Users\\CCL/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_ed25519-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_xmss type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_for_Windows_7.7

Точно так же, когда я пытаюсь ssh jump -v , я получаю

OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
debug1: Reading configuration data C:\\Users\\CCL/.ssh/config
debug1: C:\\Users\\CCL/.ssh/config line 12: Applying options for jump
debug1: Executing proxy command: exec C:\\Windows\\System32\\OpenSSH\\ssh.exe -q -W <bar_ip:port_num> bar
debug1: identity file C:\\Users\\CCL/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_ed25519-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_xmss type -1
debug1: key_load_public: No such file or directory
debug1: identity file C:\\Users\\CCL/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_for_Windows_7.7

Кажется, что процесс ssh застрял и никогда не аутентифицируется и не происходит обмен ключами. Как мне это исправить?

0
задан 16 October 2020 в 06:21
1 ответ

Похоже, вы пытаетесь использовать bar в качестве хоста перехода для подключения к jump и используете jump в качестве узла перехода для подключения к foo.Другими словами, попробуйте подключиться к bar следующим образом:

local --> foo --> jump --> bar

Ваша конфигурация ssh должна выглядеть так:

Host foo
    HostName <ip>
    User <username>
    ProxyJump jump

Host jump
    HostName <ip>
    User <username>
    ProxyJump bar

Host bar
    HostName <ip>
    User <username>
    Port <num>

А затем, чтобы подключиться, запустите просто ssh bar.

ProxyJump — это более простой способ получить то, что вы хотите, по сравнению с ProxyCommand, если вы используете OpenSSH 7.3 или новее. Кроме того, вам не нужно использовать -J в команде ssh. -J устанавливает ProxyJump для текущего вызова, который не нужен, если он уже есть в вашем файле конфигурации.

0
ответ дан 17 October 2020 в 13:42

Теги

Похожие вопросы