
Я использую файл .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$