ssh_config, раздел хоста для серверов в поисковом домене

1

У меня есть test.example.com в моих доменах поиска DNS. Когда я ssh server01, он подключается к моему серверу, как и ожидалось. Однако он не соответствует моим правилам ssh_config, потому что он не соответствует:

Host *.test.example.com 
User djimenez
ForwardAgent yes

Нет проблем, я добавлю джокер!

Host *
User djimenez
ForwardAgent yes

Однако это относится к каждому хосту. Не только короткие имена DNS (не FQDN, если хотите).

Мой вопрос, есть ли способ создать правило хоста, которое соответствует только коротким именам DNS? Или даже лучше, если бы у ssh был какой-то волшебный способ получить полное доменное имя из DNS (в случае, если у меня есть несколько поисковых доменов).

danieljimenez
источник

Ответы:

4

В спецификации хоста допускаются только два подстановочных знака , *которые соответствуют любой строке и ?соответствуют любому отдельному символу. Вы также можете добавить !к шаблону, чтобы свести на нет смысл совпадения, чтобы он применялся к значениям хоста, которые не соответствуют остальной части шаблона.

Итак, такое правило:

Host !*.*
    SomeOption...

должно применяться к любому значению имени хоста, которое не содержит точку.

Вы также можете иметь более одного шаблона для каждой строки хоста , если вы хотите, чтобы правила применялись к длинной форме имен хостов:

Host !*.* *.test.example.com
    SomeOption...
Kenster
источник
Вы меня очень близко В конечном итоге я хотел Host * !*.*. Спасибо!
danieljimenez
Я не думаю, что второе предложение (смешивание аннулированной записи и шаблона работает), потому что, согласно ssh_configman-странице If a negated entry is matched, then the Host entry is ignored, regardless of whether any other patterns on the line match, попытка доступа host-01.test.example.comне будет соответствовать блоку, потому что он "исключен" !*.*шаблоном.
lsowen
0

Страница ssh_configman гласит: «Хост - это аргумент имени хоста, заданный в командной строке (т. Е. Имя не преобразуется в канонизированное имя хоста перед сопоставлением)».

Обходным путем будет создание сценария-обертки, который сначала расширяет имя хоста, которое вы предоставляете, до полного доменного имени, если это возможно, а затем передает его в ssh, см., Например, https://serverfault.com/questions/567272/expand-hostnames- к FQDN-до-вызывающему-SSH

Яап Элдерни
источник