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 (в случае, если у меня есть несколько поисковых доменов).

2 ответа2

4

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

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

Host !*.*
    SomeOption...

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

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

Host !*.* *.test.example.com
    SomeOption...
0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .