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

Скажи мой ~/.ssh/config имеет некоторую строку:

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

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

3 ответа

Решение

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

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

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

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

Если ваши имена хостов соответствуют шаблону, вы можете использовать шаблоны 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.
Host machine*
      User user
      ProxyCommand  ssh server nc %h %p 2> /dev/null

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

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