Как добавить несколько машин с одинаковой конфигурацией в ~ / .ssh / config?

скажем, у моего ~/.ssh/config есть какая-то строка:

Host machine1
      User user
      HostName machine1
      ProxyCommand  ssh server nc %h %p 2> /dev/null

, и это работает правильно, но проблема в том, что у меня много machines: machine1, machine2, machine3, ..., так как я могу установить все их без копирования вручную тех же строк

7
задан 2 January 2018 в 17:39

3 ответа

Вы можете сделать это следующим образом:

Host machine1 machine2 machine3
      User user
      ProxyCommand ssh server nc %h %p 2>/dev/null

Вам просто нужно перечислить хосты в строке Host, разделенные пробелом, и вы можете опустить HostName, если он не отличается от имя, которое вы дали в строке Host. См. Несколько похожих записей в конфигурации ssh · U & amp; L .

Чтобы еще больше упростить это, есть подстановочные знаки * и ?, доступные в их обычном значении, поэтому Host machine? было бы равномерно возможным для вашего примера.

12
ответ дан 2 January 2018 в 17:39

Если ваши имена хостов соответствуют шаблону, вы можете использовать шаблоны SSH:

Вы можете использовать шаблоны в ~/.ssh/config. Из man ssh_config :

PATTERNS
     A pattern consists of zero or more non-whitespace characters, ‘*’ (a
     wildcard that matches zero or more characters), or ‘?’ (a wildcard that
     matches exactly one character).  For example, to specify a set of
     declarations for any host in the “.co.uk” set of domains, the following
     pattern could be used:

           Host *.co.uk

     The following pattern would match any host in the 192.168.0.[0-9] network
     range:

           Host 192.168.0.?

Итак, если вы хотите прокси все в *.example.com, то в вашем ~/.ssh/config, поместите:

Host *.example.com
    User user
    ProxyCommand ssh server nc %h %p 2> /dev/null

Или, используя собственные опции ssh, вы можете избежать netcat:

Host *.example.com
    User user
    ProxyCommand ssh -qW %h:%p server

Из man ssh :

-W host:port
     Requests that standard input and output on the client be
     forwarded to host on port over the secure channel.  Implies -N,
     -T, ExitOnForwardFailure and ClearAllForwardings.
7
ответ дан 2 January 2018 в 17:39
Host machine*
      User user
      ProxyCommand  ssh server nc %h %p 2> /dev/null

да, имя хоста избыточно.

-1
ответ дан 2 January 2018 в 17:39

Другие вопросы по тегам:

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