расширять имена хостов до полного доменного имени перед вызовом ssh?

расширять имена хостов до полного доменного имени перед вызовом ssh?

Я использую файл .ssh/config, чтобы правильно задать свое имя пользователя на основе определенной части поддомена, например:

Host *widgetshop.com*
   User foobar
   ControlMaster auto
   ControlPath ~/.ssh/socket-%r@%h:%p

Host *
   ControlMaster auto
   ControlPath ~/.ssh/socket-%r@%h:%p

Это сработает, если я напишу:

ssh foo.widgetshop.com

но не сработает, если я напишу:

ssh foo

который при разрешении пути поиска становится тем же самым полным доменным именем.

Есть ли у кого-нибудь способ раскрыть короткие имена перед вызовом ssh или альтернативный подход?

решение1

Возможно, вы можете использовать hostкоманду:

ssh $(host -t A  foo | cut -f1 -d" ")

Поместите это в скрипт оболочки (замените «foo» на «$1») и выполните ssh.

решение2

Начиная с OpenSSH 6.5, вы можете сделать это с помощью CanonicalizeHostnameопции в ssh_config. Вот пример, который должен сделать то, что вам нужно:

CanonicalizeHostname yes
CanonicalDomains widgetshop.com

Host *.widgetshop.com
     User foobar

решение3

Ответ на этот вопрос можно найти на странице руководства ssh_config:

Хост — это аргумент имени хоста, указанный в командной строке (т.е. имя не преобразуется в канонизированное имя хоста перед сопоставлением).

Другими словами, это не работает, потому что это не работает таким образом.

решение4

пожалуйста, ознакомьтесь с моим «альтернативным подходом»)

mbp:~ alexus$ grep f9 /etc/hosts
XX.XXX.XX.XXX   f9
mbp:~ alexus$ ssh f9 hostname
f9.XXX.org
mbp:~ alexus$ 

Связанный контент