Подстановочный знак конфигурации SSH на расширенном имени хоста


25

Я хочу иметь подстановочный знак в моей конфигурации SSH, чтобы установить для моего имени пользователя по умолчанию определенное значение для всех хостов в определенном домене. Но я также хочу иметь несколько коротких имен для некоторых конкретных хостов. Я ожидал что-то вроде этого, чтобы работать:

Host *.mydomain.com
    User myusername
Host host1
    Hostname host1.mydomain.com

С этими настройками, если я набираю, ssh host1.mydomain.comон оценивается как myusername@host1.mydomain.com, но если я набираю, ssh host1он не применяет мои настройки пользователя, и вместо этого я вижу mylocalusername@host1.mydomain.com.

Можно ли сопоставить символы подстановки в окончательном расширенном имени хоста, чтобы я мог набрать короткую или длинную форму и получить те же результаты?


Что делать, если вы измените порядок, ставя раздел подстановки на втором месте.
Esmit

Ты пробовал это? Я почти уверен, что вы получите правильное имя пользователя с неправильным доменом, во всяком случае.
Mu Mind

Я не пробовал это, поэтому я сделал ответ комментария как кое-что, чтобы попробовать, вместо ответа downvotable.
Esmit

Ответы:


13

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

Host *.mydomain.com host1
User myusername

Host host1
Hostname host1.mydomain.com
  • Альтернативные шаблоны поставляются пробелом-разделителем в строке хоста .
  • Все соответствующие шаблоны хостов применяются.
  • Если опция встречается несколько раз, используется только 1-й случай

3
Это экономит немного по крайней мере, набрав. Похоже, вы не знаете, как избежать дублирования информации о домене?
Mu Mind

Было бы здорово, если бы SSH мог просто попытаться добавить домен по умолчанию, то есть "lan" или "mycompany.com", вместо того, чтобы жестко кодировать его в файле конфигурации.
Saustrup

18

Вы можете просто установить CanonicalizeHostnameдля yesобработки ssh_config каноническим именем хоста вашего псевдонима. Например:

CanonicalizeHostname yes
Host *.mydomain.com
    User myusername

Host host1
    HostName host1.mydomain.com

В качестве альтернативы, если вы также хотите переназначить имена хостов, вы можете использовать Matchвместо того, Hostчтобы сопоставлять только канонические имена хостов. Например, в:

Match canonical host="*.mydomain.com"
    User myusername

Host host2.mydomain.com
    HostName host2.otherdomain.com

Пользовательская директива не будет установлена ​​при подключении к host2.mydomain.com.


Обратите внимание, что все еще существуют старые версии ssh, которые не поддерживают эти опции - если вы столкнетесь с одной из них, как и я, решение Host будет работать.
Кирстеллайн

2

Использование CanonicalDomains также будет работать.

CanonicalizeHostname yes
CanonicalDomains mydomain.com

Host *
User myusername

Если вы хотите иметь краткое имя для конкретного хоста, например:

Host h
Hostname host1

Однако я бы не рекомендовал такое короткое имя.


1

Вы можете использовать% h.mydomain.com в вашем .ssh / config.


 Host host?
 User myusername
 Hostname %h.mydomain.com

Host host?? User myusername Hostname %h.mydomain.com

Host host??? User myusername Hostname %h.mydomain.com

Теперь вы можете сделать:

SSH хост1
вместо того
ssh host1.mydomain.com
SSH хост10
вместо того
ssh host10.mydomain.com
и ssh host100

С уважением, Берт

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.