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