Я пытаюсь подключиться к моему серверу по протоколу SSH, а клиент спрашивает о подлинности хоста.
ECDSA key fingerprint is SHA256:bla bla bla
В каждой версии OpenSSH, которую я использовал, ключи ECDSA (или RSA) показывались примерно так
a7:3h:75:5d:si:9v:3g...
В Ubuntu 16.04 они показывались как
c2ymd4uGIG3y34R78BcrykBVT...
У меня есть другой способ доступа к серверу, и я пытаюсь проверить отпечаток пальца, запустив ssh-keygen -lf ssh_host_ecdsa_key.pub
. Но это выдает что-то вроде 2048 a7:3h:75:5d:si:9v:3g...
. Даже игнорируя двоеточия, они не совпадают. Я не могу быть на 100% уверен, что это не из-за атаки MITM, но это крайне маловероятно.
Как я могу проверить подписи ключей? Все решения, которые я нашел, похоже, имеют дело с другой версией ssh-keygen
, хотя я не могу понять, какая у меня версия, или какая у других.
Можно использовать ssh -o FingerprintHash=md5 user@host
, чтобы использовать олдскульные хеши MD5 или сохранить это в Вашем ~/.ssh/config
:
FingerprintHash md5
Вы сервер, вероятно, использует старую openssh версию, которая не поддерживает новый sha256 hashses.
В то время как принятый ответ решает проблему того, чтобы вынуждать более новые клиенты показать хеши MD5, это конкретно не решает проблему того, чтобы вынуждать сервер показать его цифровой отпечаток с определенной хеш-функцией при вычислении цифровых отпечатков на сервер. Разъяснить, что немного, при проверке цифровых отпечатков, необходимо соответствовать одному показанному на клиенте к истинному значению на сервере. ответ @Jakuje имеет дело с тем, чтобы заставлять клиент использовать другую хеш-функцию, этот ответ соглашения с тем, чтобы заставлять сервер показать Вам хеш с помощью другой хеш-функции. Не имеет значения, изменяете ли Вы сервер или хеш-функцию клиента, именно так они - то же.
Для нахождения цифрового отпечатка хоста на том хосте выполнитесь:
# Works with the version of OpenSSH on 16.04 but not 14.04
# (on 14.04 I have OpenSSH_6.6.1p1; on 16.04 it's OpenSSH_7.2p2)
# Check your version with with `ssh -V`
cd /etc/ssh
ssh-keygen -l -E md5 -f ssh_host_ecdsa_key.pub
, Конечно, можно измениться md5
на любую поддерживаемую хеш-функцию, и Вы, возможно, должны измениться ssh_host_ecdsa_key.pub
в зависимости от ключевого типа, который Вы используете (например, ssh_host_rsa_key.pub
).