Мой файл конфигурации SSH настроен на использование определенного IdentityFile в разделе Host * в качестве ключа по умолчанию. Для одного конкретного хоста я хочу предложить другой ключ (и только этот ключ, а не ключ по умолчанию).
Мой файл ~/.ssh/config выглядит так:
Host specialhost
HostName specialhostname.mydomain.com
IdentityFile %d/.ssh/special-key
LogLevel debug
IdentitiesOnly yes
Host *
IdentityFile %d/.ssh/regular-key
IdentitiesOnly yes
Независимо от того, что я делаю, или независимо от порядка разделов в файле конфигурации, мой SSH-клиент (OS X OpenSSH_6.2p2) сначала предлагает «обычный ключ» (который принимает сервер, а это не то, что я хотел).
Страница man ssh_config сообщает следующее о IdentityFile:
Можно указать несколько файлов идентификации, указанных в файлах конфигурации; все эти идентичности будут опробованы последовательно.
"Последовательность", на которую он ссылается, мне неясна, так как IdentityFile, указанный в разделе Host * всегда предлагается первым, даже если перед ним указан "specialhost" (как в примере выше). Предлагаемый здесь трюк IdentitiesOnly похоже, относится только к ключам, предлагаемым ssh-agent. Несколько других подобных вопросов не дали никаких ответов.
Я хочу оставить обычный ключ в разделе Host * потому что я использую этот ключ с десятками других хостов и не хочу дублировать IdentityFile в каждой записи хоста.
Есть ли способ заставить SSH предлагать только «специальный ключ», используя только конфигурацию SSH (и не копируя мои директивы IdentityFile на каждый другой хост)? Я вижу, как этого добиться, вынув ключи из раздела Host * , добавив их к агенту, а затем используя IdentitiesOnly yes для specialhost, но я бы действительно предпочел избегать использования ssh-agent, если нет другого способа. ,
