Возможно, мне не хватает чего-то очевидного, но после того, как мне надоели 5 ключевых ограничений ssh-agent, я начинаю искать способы лучшего управления ssh-ключами.
Если я создаю новую пару ключей ssh с помощью ssh-keygen -t rsa, я могу затем использовать ssh-keygen -lf для получения отпечатков как для закрытого, так и для открытого ключа, и они оба сообщают один и тот же отпечаток.
Тогда мое наивное ожидание состоит в том, чтобы сделать что-то вроде ssh-keyscan, чтобы получить отпечатки удаленного открытого ключа на этом хосте и сопоставить этот отпечаток с одним из моих закрытых ключей и инициировать соединение ssh с использованием этого закрытого ключа.
Очевидно, отпечатки пальцев, которые я получаю с помощью ssh-keyscan, даже не похожи на отпечатки локальных ключей.
Есть ли какое-нибудь решение этой дилеммы?
В ssh-keyscan
команда предназначена для сканирования ключей хоста (/etc/ssh/ssh_host_*.pub
), а не ключи, используемые для аутентификации / авторизации пользователей.
Вам нужно будет подключиться к удаленному хосту и изучить различные файлы authorized_keys. Сложность состоит в том, что в файле authorized_keys может быть много ключей, поэтому вам нужно проделать некоторые манипуляции, чтобы извлечь отдельные ключи и распечатать их.
Есть еще одно вопрос / ответ о сбое сервера с помощью некоторых хороших методов.
Думаю, я смогу избежать вашей дилеммы, просто определив априори, какую пару ключей использовать для какого хоста в моем ~/.ssh/config
Host www
HostName www.example.com
IdentityFile ~/.ssh/key1
Host dev
HostName dev.example.org
IdentityFile ~/.ssh/key2