Когда лучше использовать ssh-keyscan вместо ssh для управления known_hosts?

Когда лучше использовать ssh-keyscan вместо ssh для управления known_hosts?
Когда лучше использовать ssh-keyscan вместо ssh для управления known_hosts? - jrkorpa @ Unsplash

Когда выполняется

ssh -i id_rsa_something [email protected]

появляется:

The authenticity of host '192.168.1.2 (192.168.1.2)' can't be established.
ECDSA key fingerprint is SHA256:ABCABC [fixed/changed].
Are you sure you want to continue connecting (yes/no)?

Если я напишу да, я могу получить доступ к удаленному серверу через SSH. Так что до сих пор конфигурация SSH для удаленных подключений работает должным образом. Кроме того, в файле .ssh/known_hosts в клиенте было добавлено:

192.168.1.2 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNo...

Таким образом, клиент через файл .ssh/known_hosts знает, что у него есть доверенный сервер, а на стороне сервера через файл .ssh/authorized_keys существует копия открытого ключа клиента. До этого момента защитное соединение может быть установлено мирным путем между клиентом и сервером.

Я думал, что это единственный логический подход к установлению соединения между клиентом и сервером (назовем это первым подходом). Я имею в виду, сгенерировать ключи, скопировать открытый ключ на сервер и, наконец, выполнить соединение в качестве первой общей команды (даже с запущенным агентом SSH или нет).

Теперь я провел исследование в ветках StackExchange о том, как удалить отпечаток пальца на стороне клиента, это с помощью команды ssh-agent -R hostname, которая влияет на файл .ssh/known_hosts и генерирует файл known_hosts.old и работает, но в опубликованных решениях появляется как дополнительная информация во много раз ssh-keyscan добавить отпечаток хоста в файл .ssh/known_hosts - я провел исследование по этому поводу, а учебные пособия только учат, как использовать - я не смог найти вескую причину того, когда будет обязательным использование ssh-keyscan по сравнению с первым подходом

добавления ключа хоста к known_hosts явно с помощью ssh-keyscan или путем подключения с помощью ssh технически одинаковы.

В действительности ssh-keyscan не дает вам возможности проверить, что ключ хоста действителен. Поэтому вам придется ex-post проверять содержимое known_hosts, в конечном итоге удаляя ключ, если окажется, что это ключ вредоносного сервера. Кроме того, known_hosts содержит полный ключ, который вы вряд ли сможете проверить. Напротив, ssh показывает отпечаток ключа хоста, который легче проверить.


NevaDev, 30 января 2023 г., 12:45