
В ssh
клиентах файл .ssh/knwon_hosts
может использовать обычный текст (такое происходит, например, в FreeBSD 12.0):
<ip_address> ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEIlD8R6Kxj9CdToar+3ay4B0yE65dP0EYoRJjEEgLjmvCTIv59DBp+0j2z0+NM0hxxJew79i1bYuN02lEvT2/E=
или он может быть хеширован (как в Ubuntu 18.04):
|1|3Et6QShrP2OrD4tWdOGP3jy3YC4=|f2FrJ5tOjjmFSrGWyen1DokJyLc= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIyZLGNvIADWL5SSkohBmDCVpLUzAHNejqQAXP3SSY300YIdNKCn3jqGmFAJiKB1CY0HnVirgFjdAKpyw3+6yzo=
Вопрос 1
Можно ли получить строки обычного текста из хэша known_hosts
?
Убунтуsshd страница руководстваговорится, что:
В одной строке может отображаться только одно хешированное имя хоста, и ни один из вышеуказанных операторов отрицания или подстановочных знаков не может быть применен.
Я не совсем понимаю, что здесь имеется в виду.
вопрос 2
Означает ли это, что адреса типа 192.168.*.*
никогда не могут быть приняты в хешированной форме known_hosts
, даже если они созданы как обычный текст, а затем вручную хешированы?
Как впредыдущий вопрос, Я использую эти клиенты: OpenSSH_7.8p1, OpenSSL 1.1.1a-freebsd 20 Nov 2018
и OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
.
решение1
Нет и да, именно в таком порядке. Цель хеширования строки — скрыть хосты, к которым вы ранее подключались, поэтому само назначение хеш-функции — сделать (для практических целей) невозможным определение имени хоста, которому она принадлежит.
В более широком смысле, вы не можете заставить подстановочные знаки работать с хэшированными именами хостов: если я хочу подключиться к webhost47
, а строки хэшированы, как мне вообще узнать, есть ли строка, которая соответствует webhost*
? Хеш — это лазейка, я могу найти эту строку только с помощью хэширования webhost*
и проверки. Но мне также придется проверять ?ebhost47
, w?bhost47
, ??bhost47
, и т. д. и т. п., так что это не совсем разумно.
(Я думаю, комментарий также означает, что вы не можете иметь
hashblurb1,hashblurb2 ssh-rsa …
с хэшированными именами хостов, даже если у вас есть
hostname1,hostname2 ssh-rsa …
и я не вижу технической причины, по которой этого нельзя было бы сделать.)