Например, при подключении к новому / неизвестному серверу (с недавним OpenSSH):
ssh example.com
Вы получаете отпечаток, как показано ниже:
The authenticity of host 'example.org (192.0.2.42)' can't be established.
RSA key fingerprint is SHA256:7KMZvJiITZ+HbOyqjNPV5AeC5As2GSZES5baxy1NIe4.
Are you sure you want to continue connecting (yes/no)?
Тем не менее, отпечатки пальцев обычно предоставляются для сервера в этой форме:
f6:fc:1c:03:17:5f:67:4f:1f:0b:50:5a:9f:f9:30:e5
Как я могу проверить подлинность (без ошибок администраторов сервера для предоставления отпечатка пальца SHA256)?
Ответы:
Ранее отпечаток был задан как шестнадцатеричный хэш md5. Начиная с OpenSSH 6.8, отпечаток пальца теперь отображается как base64 SHA256 (по умолчанию). Вы не можете сравнить их напрямую.
Они также добавили новую опцию конфигурации
FingerprintHash
. Вы можете положитьв вашем случае,
~/.ssh/config
чтобы вернуться к старому ( менее безопасному ) значению по умолчанию или просто использовать эту опцию для одноразового использования:который дал бы отпечаток пальца как
Надеемся, что администраторы сервера предоставят оба типа отпечатков пальцев в ближайшем будущем.
РЕДАКТИРОВАТЬ:
Как указано на форумах Arch Linux , есть и третий вариант:
РЕДАКТИРОВАТЬ:
Вы можете сгенерировать хеш произвольного ключа, как это указано в кулинарной книге OpenSSH :
Получить ключ:
ssh-keyscan example.org > key.pub
/etc/ssh
Создайте хеш:
key.pub
либо выполнитеssh-keyscan -t rsa example.org > key.pub
ssh-keygen -l -f key.pub
(по умолчанию хеш, в зависимости от версии OpenSSH)ssh-keygen -l -f key.pub -E md5
(MD5 на текущий OpenSSH)awk '{print $2}' ssh_host_rsa_key.pub | base64 -d | sha256sum -b | awk '{print $1}' | xxd -r -p | base64
(sha256 на старом OpenSSH)awk '{print $3}'
для более новых версий ssh-keyscan, потому что формат изменился)источник
ssh-keygen -lf
на сервере только дает мне распечатку md5, и до сих пор я не могу найти, как получить sha256 ни на страницах руководства, ни на www ...awk
1-строчного (не совпадает с хешем, показанным моим клиентом)sha256sum -b | awk '{print $1}' | xxd -r -p
может быть замененopenssl sha256 -binary
не требующим vim установлен. Результирующая командная строка будет такой:awk '{print $2}' ~/.ssh/id_rsa.pub | base64 -d | openssl sha256 -binary | base64
Просто создан небольшой Баш скрипт , который будет печатать таблицу с отпечатками пальцев для всех ключевых шифров , разрешенных на сервере ( в соответствии с
/etc/ssh/sshd_config
) в обоихSSH-256
иMD5
алгоритме. Вот пример вывода:Скрипт будет работать и на серверах с
SSH
версией ниже6.8
(до-E md5
добавления опции).Редактировать: Обновленные версии для еще более новых версий SSH, которые теперь переключают шифры по умолчанию с поддержкой изображений ASCII.
Это просто красивая распечатка с использованием информации из
JonnyJD
ответа. Благодарю.источник
оказывается, у ssh-keygen (когда-то после версии 6.6; предположительно 6.8) есть
-E md5
опция, которая заставит его распечатать отпечаток как отпечаток md5. Таким образом, если вы можете самостоятельно получить файл открытого ключа сервера, вы можете передать егоssh-keygen -E md5 -l -f ssh_host_rsa_key.pub
и получить свой привычный отпечаток.источник
Следующая однострочная работа (как минимум) на
Ubuntu 16.04,18.04 / Centos >= 7
(Протестировано с серверами:
openssh 3.9
-openssh 7.4
)Выход:
источник
попытался изменить, чтобы получить случайное искусство в таблицу:
... но на самом деле я не программист, и скрипт не работает должным образом. Был бы признателен, если кто-нибудь может помочь исправить (также очистка). Было бы неплохо располагать случайные художественные изображения sha256 и md5 для более эффективного использования пространства. Я также изменил команды md5 и sha256, так как оригинальные команды у меня не работали (возможно, слишком новая система) - в таблицу попал только sha256 со знаком «=», который не был частью фактического отпечатка пальца и не мог его удалить.
(извините, я не смог прокомментировать, как я недавно зарегистрировался)
источник