Есть 3 машины: A (откуда я подключаюсь к B и C), B и C.
У B и C одинаковые ключи хоста SSHD (они были скопированы, поэтому они на 100% совпадают, SSHD также был перезапущен, файл sshd_config идентичный).
На C файл known_hosts выглядит так:
C:~/.ssh # grep B *
C:~/.ssh # grep A *
known_hosts:ssh-rsa xxxx...xxxx
C:~/.ssh #
Когда мы пытаемся подключиться из C в A, то "A" предлагает свой ключ хостов RSA.
Когда мы пытаемся подключиться из C в B, то "B" предлагает свой ключ хостов ECDSA.
Вопрос:Почему? Разве не было бы логично, если бы сервер "A" и сервер "B" предлагали оба ex.: их ключи хостов RSA SSHD?
решение1
Ключи ECDH/ECDSA предпочтительны при первом изучении ключа хоста. Поскольку хост C уже знает ключ RSA хоста A, он продолжает его использовать. Но поскольку хост C ничего не знает о ключах хоста B, используется ECDH/ECDSA.
(Я сослался назаметки о выпуске для 5.7, когда был введен ECDH/ECDSA).
Вопросы, которые я получил: Нужны ли оба ключа? Ну да. Не все инсталляции SSH поддерживают ECDSA, поэтому вам нужен RSA. (Например, putty пока не поддерживает ECDSA) Что произойдет, если у меня есть только ECDSA? Зависит от того, кто пытается с вами связаться. Если они поддерживают ECDSA, то все работает как и ожидалось. Если нет, то вы получите какой-то сбой. Какая из них лучше? Лично я не знаю. ECDSA требует меньше лошадиных сил, поэтому я обнаружил, что он более быстрый на старом оборудовании. И поскольку OpenSSH предпочитает его RSA, я предполагаю, что разработчики считают ECDSA лучше.
решение2
Имеют ли серверы, к которым вы пытаетесь подключиться, одинаковые /etc/ssh/sshd_config
версии OpenSSH (и OpenSSL) (части об идентичных конфигурациях и о том, куда вы подключаетесь, кажутся немного противоречивыми)? ECDH/ECDSA были введены в OpenSSH 5.7p1, поэтому если один сервер старше, он просто проигнорирует файл ключа.