Использование ProxyCommand для множественных переходов и аутентификации по запросу

С помощью awk:

... | awk -F'= ' '{gsub(", ", "\\|", $2); print $2}'
  • -F '= ' устанавливает разделитель полей как =

  • gsub(", ", "\\|", $2) заменяет все , на \| во втором поле на место

  • print $2 печатает второе поле

Пример:

$ awk -F'= ' '{gsub(", ", "\\|", $2); print $2}' <<<'LST = fr, de, pl, ru, ch, us, uk, ca'
fr\|de\|pl\|ru\|ch\|us\|uk\|ca
18
10.11.2016, 13:30
2 ответа

Я сделал это с двумя прыжками, но это должно работать для трех. Самый простой способ - установить файл ~ / .ssh / config на каждом хосте. Итак, если вы хотите быть на hosta и попасть на hostd через hostb и hostc`, вы можете настроить свои конфигурации следующим образом:

In ] hosta: ~ / .ssh / config :

Host hostd
    User username
    ProxyCommand ssh hostb nc %h %p 2> /dev/null

В hostb: ~ / .ssh / config :

Host hostd
    User username
    ProxyCommand ssh hostc nc %h %p 2> /dev/null

В hostc: ~ / .ssh / config :

Host hostd
    User username
    ProxyCommand ssh hostd nc %h %p 2> /dev/null

Затем вы можете ssh hostd на любом из хостов в цепочке, и вы попадете на hostd .

Использование netcat для прокси не влияет на scp .

Если по какой-то причине вы действительно не хотите использовать локальные файлы ~ / .ssh / config , вы можете сделать это на hosta :

ssh -oProxyCommand='ssh -oProxyCommand=\'ssh -o ProxyCommand=\\\'ssh username@hostd nc %h %p 2>/dev/null\\\' username@hostc nc %h %p 2> /dev/null' username@hostb nc %h %p 2> /dev/null' username@hostd
-1
27.01.2020, 19:46

Версия nc больше не рекомендуется. Используйте переключатель -W , который предусмотрен в последних версиях OpenSSH. Также не нужно копировать конфиг на другие хосты! Вся настройка должна выполняться на вашем хосте, и она никоим образом не мешает работе scp . Просто создайте файл ~ / .ssh / config с:

Host jumphost1
  User username1
Host jumphost2
  User username2
  ProxyCommand ssh -W %h:%p jumphost1
Host jumphost3
  User username3
  ProxyCommand ssh -W %h:%p jumphost2
Host server
  User username4
  ProxyCommand ssh -W %h:%p jumphost3

А затем подключитесь с помощью ssh-сервера или используйте scp file server: path / . Если вы настаиваете на единственном указателе (или не уверены, что вы имеете в виду, говоря о вложении ProxyCommand ), то, как уже отмечалось, это адский выход:

ssh -oProxyCommand= \
  'ssh -W %h:%p -oProxyCommand= \
    \'ssh -W %h:%p -oProxyCommand= \
      \\\'ssh -W %h:%p username1@jumphost1\\\' \
    username2@jumphost2\' \
  username3@jumphost3' \
username4@server

Вам в основном нужно идти изнутри.

29
27.01.2020, 19:46

Теги

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