Я понимаю, как работает ~ / .ssh / config, что каждая строка 'Host' вступает в силу для любого хоста, соответствующего после этой точки в файле конфигурации.
У меня есть несколько личных серверов и рабочих серверов, к которым мне нужно подключиться. Я пытаюсь сделать что-то вроде следующего:
# Общие настройки ControlMaster auto ControlPath ~/.ssh/controlmaster/%r@%h:% p ВпередАгент да ForwardX11 да GSSAPIAАутентификация нет PubkeyAuthentication да # Персональные серверы Хост * Пользователь harleypig IdentityFile ~ / .ssh / personal_id_rsa Host host1 Имя хоста host1.com Host host2 Имя хоста host2.com # Работа серверов Хост * Пользователь alan.young IdentityFile ~ / .ssh / work_id_rsa Host work1 Имя хоста work1.companyserver.com Host work2 Имя хоста work2.companyserver.com Хост * Пользователь devuser Host dev1 Имя хоста dev1.companyserver.com Host dev2 Имя хоста dev2.companyserver.com
Документы, кажется, указывают, что host1 и host2 должны использовать 'personal_id_rsa' и пользователя harleypig. work1, work2, dev1 и dev2 должны использовать 'work_id_rsa', и первые два должны быть пользователем 'alan.young', а dev1 и dev2 должны быть пользователем 'devuser'
Однако этого не происходит. Что бы я ни указывал на «Host *», это то, с чем пытаются соединиться все следующие хосты. Я недоразумение или что-то упустил?
Ответы:
Из
ssh_config
руководства :Так что в вашем примере все хосты будут использовать
User harleypig
иIdentityFile ~/.ssh/personal_id_rsa
.Думайте о
Host
директивах с подстановочными знаками как о запасных: используйте следующие настройки, только если они еще не установлены. Вам нужно написать что-то вроде этого:Вы можете поместить несколько шаблонов в
Host
строку, если данный набор псевдонимов хоста не может быть сопоставлен с подстановочными знаками, напримерHost host* more* outlier
.источник
Вы определенно делаете это неправильно.
Host *
в качестве последней записи.Host *
записейЕсли у ваших рабочих машин есть формат имени, который вы можете обобщить для нацеливания только на рабочие машины, например, для: machine1.work.com, host.work.com, fileserver.work.com, тогда вы можете настроить свою рабочую машину как:
То же самое относится и к вашим личным машинам.
источник
Host *
в начале файла, кажется, работает нормально. Возможно, тот факт, что вы используете подстановочный знак, превосходит тот факт, что это первая запись при назначении им приоритета?Host *.work.com
это неверный синтаксис. Это работает только наоборот:Host myserver*
Host *subdomain.com
он не будет отвечать.