Мой файл конфигурации 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, если нет другого способа. ,