Несколько похожих записей в конфигурации ssh

Скажем, я хочу настроить параметры ssh для 30 серверов с одинаковой настройкой в ​​моем config файле .ssh :

 host XXX HostName XXX.YYY.com User my_username Compression yes Ciphers arcfour,blowfish-cbc Protocol 2 ControlMaster auto ControlPath ~/.ssh/%r@%h:%p IdentityFile ~/.ssh/YYY/id_rsa 

где единственное, что меняется между этими 30 машинами, – XXX .

Вместо того, чтобы повторять указанную выше структуру 30 раз в моем файле config , есть ли другой способ определить диапазон машин?

5 Solutions collect form web for “Несколько похожих записей в конфигурации ssh”

На ssh_config(5) :

  Host Restricts the following declarations (up to the next Host key‐ word) to be only for those hosts that match one of the patterns given after the keyword. If more than one pattern is provided, they should be separated by whitespace. 

  HostName Specifies the real host name to log into. This can be used to specify nicknames or abbreviations for hosts. If the hostname contains the character sequence '%h', then this will be replaced with the host name specified on the commandline (this is useful for manipulating unqualified names). 

Так:

 Host XXX1 XXX2 XXX3 HostName %h.YYY.com 

Просто используйте *

См. man ssh_config :

PATTERNS Шаблон состоит из нуля или более символов без пробелов, '*' (подстановочный знак, который соответствует нулю или более символов), или '?' (подстановочный знак, который соответствует точно одному символу). Например, чтобы указать набор объявлений для любого хоста в наборе доменов «.co.uk», можно использовать следующий шаблон:

  Host *.co.uk The following pattern would match any host in the 192.168.0.[0-9] network range: Host 192.168.0.? A pattern-list is a comma-separated list of patterns. Patterns within pattern-lists may be negated by preceding them with an exclamation mark ('!'). For example, to allow a key to be used from anywhere within an organisation except from the “dialup” pool, the following entry (in authorized_keys) could be used: from="!*.dialup.example.com,*.example.com" 

Чтобы свести к минимуму настройку, вы можете иметь .ssh/config как этот

 Host X01 HostName X01.YYY.com Host X02 HostName X02.YYY.com ... Host X01 X02 ... User my_username Compression yes Ciphers arcfour,blowfish-cbc Protocol 2 ControlMaster auto ControlPath ~/.ssh/%r@%h:%p IdentityFile ~/.ssh/YYY/id_rsa 

Host X01 X02 ... может быть заменен хостом Host * если каждый хост имеет следующую конфигурацию

это работает для меня:

 CanonicalizeHostname да
 CanonicalDomains xxx.auckland.ac.nz yyy.auckland.ac.nz

 хост * .xxx.auckland.ac.nz
    пользователь myuser
 хост * .yyy.auckland.ac.nz
    пользователь myuser

это позволяет использовать имена в домене и изменить имя пользователя:

 bluebottle: ~ user_one $ ssh itslogprd05
 Пароль myuser@itslogprd05.xxx.auckland.ac.nz: 

Из ответов Игнасио Васкеса-Абрама и Х.-Дирка Шмитта можно добавить следующее в .ssh / config

 HOST XXX* HostName %h.YYY.com User myname 

а затем, например, вы можете войти в систему как myname@XXX2.YYY.com

 ssh XXX2 
  • VNC / SSH: как выполнить команду после входа?
  • Как сохранить процессы, выполняемые на удаленном сервере, даже после выключения терминальной машины?
  • Как настроить ssh-сервер с VPN-туннелем? (Маршрутизация политики для службы sshd)
  • Проблема с клиентской стороной SSH: зависание и синхронизация на некоторых хостах
  • Как rsync через ssh, когда имена каталогов имеют пробелы
  • Проблемы с ssh только при подключении с удаленного IP-адреса
  • использовать SSH-туннель для байпаса
  • Изменение переменной PHP PATH для SSH
  • Переслать все порты VNC с помощью SSH
  • Учетные записи дросселя после неудачных попыток входа в систему SSH
  • scp не работает без пароля
  • Linux и Unix - лучшая ОС в мире.