Итак, у меня есть 3 сервера:

  • server_a: мой целевой сервер
  • server_b: сервер перехода
  • server_c: другой сервер

Ни server_a, ни server_b обычно не имеют доступа к server_c вообще. Однако я могу использовать магию удаленной переадресации, чтобы предоставить server_c определенный порт на server_a. Следующая команда выполняет это:

ssh -t -A -R 6880:server_c:22 server_b ssh -t -A -R 6880:localhost:6880 server_a

Я хочу преобразовать эту громоздкую команду в эквивалентные настройки ssh_config. Я могу получить базовое соединение ssh/scp, работающее с помощью прокси-команды:

host server_b
  Hostname 192.X.X.X
  User john
  IdentityFile /path/to/identity_file
  ForwardAgent yes

Host server_a
  Hostname 172.X.X.X
  User john
  ProxyCommand ssh -W %h:%p server_b

Но вышеупомянутые конфиги не делают никакой удаленной пересылки, и server_a вообще не имеет доступа к server_c. Я попытался добавить строки RemoteForward для достижения этой цели:

host server_b
  Hostname 192.X.X.X
  User john
  IdentityFile /path/to/identity_file
  ForwardAgent yes
  RemoteForward 6880 server_c:22

Host server_a
  Hostname 172.X.X.X
  User john
  ProxyCommand ssh -W %h:%p server_b
  RemoteForward 6880 localhost:6880

Если я ssh напрямую в server_b, кажется, что удаленная пересылка на server_c - это нормально, но когда я ssh прямо в server_a со своего ноутбука, доступ к server_c через удаленную пересылку, похоже, не работает.

Мы ценим любые предложения

1 ответ1

0

ProxyCommand не то же самое , как с помощью ssh server_b ssh server_a Это позволяет ssh клиенту работать локально и просто передавать протокол SSH через туннель.

Таким образом, вам не нужны никакие параметры пересылки для хоста перехода, только для окончательного соединения:

Host server_a
    ProxyCommand ssh -W %h:%p server_b
    RemoteForward 6880 server_c:6880

Host server_b
    # no RemoteForward
    # no ForwardAgent, either!

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

Host server_a
    ProxyJump server_b
    RemoteForward 6880 server_c:6880

То же самое в командной строке:

$ ssh -R 6880:server_c:6880 -J server_b server_a

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .