Копировать известные_хосты между компьютерами?

2993
OJW

Подключитесь к серверу, используя 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 

Есть ли способ конвертировать между двумя форматами?

3
Почему бы вам просто не обновить OpenSSL на другом компьютере. openssl-1.0.1c является текущей версией. Это плохая идея использовать уязвимые версии OpenSSL. Я должен отметить, что 0.9.8d уязвим для атаки Invalid TLS / DTLS. Ramhound 11 лет назад 1
Я понимаю, что использование одной и той же версии OpenSSL на обеих машинах позволит совместно использовать файлы конфигурации. Хотя это отличная идея, этот вопрос о том, как создать known_hosts, который может быть разделен между этими двумя версиями, которые мы случайно установили. OJW 11 лет назад 0
Поскольку я не знал ответа на ваш вопрос, я предложил логичное решение, использующее одну и ту же версию на обеих машинах. Кроме того, вам действительно следует обратить внимание на уязвимость по отношению к версии, которую вы используете. Ramhound 11 лет назад 0

2 ответа на вопрос

5
grawity

Ваш первый пример содержит ключ ECDSA ( ecdsa-sha2-nistp256), который был представлен в OpenSSH 5.7.

OpenSSH 4.5 поддерживает только ключи RSA и DSA ( ssh-rsaи ssh-dss) и игнорирует вашу запись known_hosts.

Какой самый низкий общий знаменатель из этих двух версий? то есть, какая опция командной строки говорит v5.7 использовать лучший шифр, который поймет v4.5? OJW 11 лет назад 0
@OJW: `-o HostKeyAlgorithms` - см. Ssh_config (5). grawity 11 лет назад 0
Благодарю. Какой лучший алгоритм HostKeyAlgorithm будет понятен обеим версиям? OJW 11 лет назад 0
@OJW: Это уже в ответе ... grawity 11 лет назад 0
ах да, спасибо. Я закомментировал ecdsa на сервере / etc / ssh / sshd_config (и отключил HashKnownHosts на клиенте), а затем клиент сгенерировал совместимый known_hosts с ключом rsa, так что он работал нормально. Я не мог найти способ для клиента указать не-ECDSA, хотя? OJW 11 лет назад 0
@OJW: Укажите все алгоритмы HostKeyAlgorithms, которые * не * ECDSA (то есть `HostKeyAlgorithms = ssh-rsa, ssh-dss`). grawity 11 лет назад 0
@OJW: В качестве альтернативы вы можете добавить * несколько * открытых ключей для одного и того же хоста в `known_hosts` (например, используя` ssh-keyscan` или просто скопировав с сервера `/ etc / ssh / ssh_host _ * _ key.pub` ) - таким образом, современные клиенты будут проверять линию ECDSA, а старые - RSA или DSS. (Хотя я не могу перечислить здесь какие-либо преимущества для ECDSA, делайте так, как хотите.) grawity 11 лет назад 0
4
jjlin

Первый формат ключей, который у вас есть, - это хешированный формат, разработанный для того, чтобы кто-то, взломавший вашу учетную запись, не знал, к каким другим хостам он / она может подключиться, используя ваш пароль и / или ключи SSH.

Можно преобразовать открытый текст в хешированный формат, но не наоборот. Для этой цели в сети существуют различные сценарии.

Если вас не очень волнует эта проблема, вы всегда можете добавить

HashKnownHosts no 

чтобы ~/.ssh/configотключить known_hostsхеширование. Обратитесь к ssh_config (5) для получения дополнительной информации.

+1, но это не актуальная проблема. grawity 11 лет назад 0
еще полезно знать :) OJW 11 лет назад 0

Похожие вопросы