Когда выполняется
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
показывает отпечаток ключа хоста, который легче проверить.