Ваш первый пример содержит ключ ECDSA ( ecdsa-sha2-nistp256
), который был представлен в OpenSSH 5.7.
OpenSSH 4.5 поддерживает только ключи RSA и DSA ( ssh-rsa
и ssh-dss
) и игнорирует вашу запись known_hosts.
Подключитесь к серверу, используя OpenSSH_5.9p1 OpenSSL 1.0.1, и он хранит файл .ssh / known_hosts в следующем формате:
|1|wwwwwwwwwwwwwww=|wwwwwwwwww= ecdsa-sha2-nistp256 AAAAAAAAAA+AAAAA=
Затем скопируйте этот файл known_hosts на другой компьютер, на котором работает OpenSSH_4.5p1 OpenSSL 0.9.8d, и он выдаст сообщение «аутентификация не может быть установлена, вы уверены, что хотите продолжить подключение», как если бы файл known_hosts был неправильным.
Когда этот второй компьютер сохраняет известные_хосты для того же сервера, он записывает его в формате:
[10.2.3.4]:22 ssh-rsa AAAAAAAAAA/BBBBB/CCCCCC//DDDDDD
Есть ли способ конвертировать между двумя форматами?
Ваш первый пример содержит ключ ECDSA ( ecdsa-sha2-nistp256
), который был представлен в OpenSSH 5.7.
OpenSSH 4.5 поддерживает только ключи RSA и DSA ( ssh-rsa
и ssh-dss
) и игнорирует вашу запись known_hosts.
Первый формат ключей, который у вас есть, - это хешированный формат, разработанный для того, чтобы кто-то, взломавший вашу учетную запись, не знал, к каким другим хостам он / она может подключиться, используя ваш пароль и / или ключи SSH.
Можно преобразовать открытый текст в хешированный формат, но не наоборот. Для этой цели в сети существуют различные сценарии.
Если вас не очень волнует эта проблема, вы всегда можете добавить
HashKnownHosts no
чтобы ~/.ssh/config
отключить known_hosts
хеширование. Обратитесь к ssh_config (5) для получения дополнительной информации.