Проблема: у меня есть 20-30 ssh-agentличностей. Большинство серверов отказывают в аутентификации Too many failed authentications, поскольку SSH обычно не позволяет мне попробовать 20 различных ключей для входа в систему.
В данный момент я указываю файл идентификации для каждого хоста вручную, используя директиву IdentityFileand IdentitiesOnly, чтобы SSH попробовал только один файл ключа, который работает.
К сожалению, это перестает работать, как только оригинальные ключи больше не доступны. ssh-add -lпоказывает мне правильные пути для каждого ключевого файла, и они совпадают с путями .ssh/config, но это не работает. Очевидно, SSH выбирает идентификационные данные по подписи открытого ключа, а не по имени файла, что означает, что исходные файлы должны быть доступны, чтобы SSH мог извлечь открытый ключ.
Есть две проблемы с этим:
- он перестает работать, как только я отключаю флешку с ключами
- это делает пересылку агента бесполезной, поскольку файлы ключей недоступны на удаленном хосте
Конечно, я мог бы извлечь открытые ключи из моих файлов идентификации и сохранить их на своем компьютере и на каждом удаленном компьютере, на котором я обычно захожу. Это не похоже на желаемое решение, хотя.
Что мне нужно, так это возможность выбрать идентификатор из ssh-agent по имени файла, чтобы я мог легко выбрать правильный ключ, используя .ssh/configили передавая -i /path/to/original/key, даже на удаленном хосте, в который я входил по SSH. Было бы еще лучше, если бы я мог «прозвать» ключи, чтобы мне даже не пришлось указывать полный путь.
authorized_keysфайл, который, в зависимости от используемого ключа, выполняет различные команды, даже не разрешая прямой доступ к оболочке.