Как найти отпечаток SSH/SFTP-сервера

  • Михаил
  • 8 мин. на прочтение
  • 722
  • 24 Aug 2023
  • 24 Aug 2023

Когда приложения подключаются к серверу с протоколами SFTP и SCP, используются криптографические ключи RSA (или аналогичные ключи). Пользователь может принять либо любой открытый ключ, либо только те ключи, которые соответствуют определенному fingerprint  (отпечатку пальца) (криптографической контрольной сумме). Принятие только ключей с известными контрольными суммами предотвращает возможность атаки «человек посередине». Если пользователь устанавливает опцию проверки сервера для приема любого отпечатка пальца , приложения принимает любой ключ, возвращаемый сервером. Если пользователь решает принимать только ключи с определенными отпечатками пальцев, эти отпечатки должны быть предоставлены. Пользователь может указать несколько отпечатков пальцев, разделенных запятой, точкой с запятой или вертикальной чертой. Для плавного перехода со старого сервера на новый пользователь может указать отпечатки пальцев как старого, так и нового серверов.

Отпечаток MD5
Как получить отпечаток открытого ключа? Узнать отпечаток открытого ключа можно, выполнив несколько команд на сервере. Многие серверы одновременно используют 4 ключа, каждый из которых создан с использованием разных алгоритмов цифровой подписи, таких как RSA, DSA, ECDSA или ED25519.

В зависимости от предпочтительного алгоритма пользователь может выбрать, какой файл ключа взять. Во многих случаях используются ключи RSA. Чтобы получить ключ в формате, который можно использовать с Automation Workshop, пользователю необходимо получить отпечаток открытого ключа SSH и преобразовать его.

RSA-ключ
Для ключа RSA выполните следующую команду и отредактируйте результат:

sudo ssh-keygen -l -E MD5 -f /etc/ssh/ssh_host_rsa_key

2048 MD5:cc:68:2d:7c:95:a6:ea:14:5c:a0:14:fa:9a:5b:6e:26 root@ip-111-11-11-11 (RSA)
В возвращаемой строке удалите MD5:начало ключа и все, что следует за ним. Добавьте ssh-rsaв начало, чтобы конечная строка выглядела так:

ssh-rsa 2048 cc:68:2d:7c:95:a6:ea:14:5c:a0:14:fa:9a:5b:6e:26
 

ключ DSA
Для ключа DSA выполните следующую команду и отредактируйте результат:

sudo ssh-keygen -l -E MD5 -f /etc/ssh/ssh_host_dsa_key

1024 MD5:0e:a7:1d:88:36:7f:be:97:16:7a:7c:52:76:c5:ca:99 root@ip-111-11-11-11 (DSA)
В возвращаемой строке удалите MD5:начало ключа и все, что следует за ним. Добавьте ssh-dssв начало, чтобы конечная строка выглядела так:

ssh-dss 1024 0e:a7:1d:88:36:7f:be:97:16:7a:7c:52:76:c5:ca:99
 

ключ ECDSA
Для ключа ECDSA выполните следующую команду и отредактируйте результат:

sudo ssh-keygen -l -E MD5 -f /etc/ssh/ssh_host_ecdsa_key

256 MD5:84:49:6b:af:8a:cd:84:ea:ea:27:67:f3:67:52:fb:ae root@ip-111-11-11-11 (ECDSA)
В возвращаемой строке удалите MD5:начало ключа и все, что следует за ним. Добавьте ecdsa-sha2-nistp256в начало, чтобы конечная строка выглядела так:

ecdsa-sha2-nistp256 256 84:49:6b:af:8a:cd:84:ea:ea:27:67:f3:67:52:fb:ae


Ключ ED25519
Для ключа ED25519 выполните следующую команду и отредактируйте результат:

sudo ssh-keygen -l -E MD5 -f /etc/ssh/ssh_host_ed25519_key

256 MD5:43:4f:48:e8:7d:3b:a8:15:0a:c8:8d:0a:56:32:27:64 root@ip-111-11-11-11 (ED25519)
В возвращаемой строке удалите MD5:начало ключа и все, что следует за ним. Добавьте ssh-ed25519в начало, чтобы конечная строка выглядела так:

ssh-ed25519 256 43:4f:48:e8:7d:3b:a8:15:0a:c8:8d:0a:56:32:27:64


Отпечаток SHA256
Альтернативно, пользователь может выбрать другой алгоритм хеширования, опустив -E аргумент.

RSA-ключ
Для ключа RSA выполните следующую команду и отредактируйте результат:

sudo ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

2048 SHA256:6c3k0RwFLVhK7rYa8yDGayedWafip37WOeTXGqP6cRA root@ip-111-11-11-11 (RSA)
В возвращаемой строке удалите SHA256:начало ключа и все, что следует за ним. Поместите =символ в конец строки и добавьте ssh-rsaпрефикс, чтобы конечная строка выглядела так:

ssh-rsa 2048 6c3k0RwFLVhK7rYa8yDGayedWafip37WOeTXGqP6cRA=


ключ DSA
Для ключа DSA выполните следующую команду и отредактируйте результат:

sudo ssh-keygen -l -f /etc/ssh/ssh_host_dsa_key

1024 SHA256:ATx6RcbwUwyE9Lrm4yAPX0G2sUo+CKsmA4pdyEhCt5A root@ip-111-11-11-11 (DSA)
В возвращаемой строке удалите SHA256:начало ключа и все, что следует за ним. Поместите =символ в конец строки и добавьте ssh-dssпрефикс, чтобы конечная строка выглядела так:

ssh-dss 1024 ATx6RcbwUwyE9Lrm4yAPX0G2sUo+CKsmA4pdyEhCt5A=


ключ ECDSA
Для ключа ECDSA выполните следующую команду и отредактируйте результат:

sudo ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key

256 SHA256:yP/wF6NAzTSu69QvJkX/A2pGvzT4Vtc9gvj/iW9YjEU root@ip-111-11-11-11 (ECDSA)
В возвращаемой строке удалите SHA256:начало ключа и все, что следует за ним. Поместите символ равенства =в конце строки и добавьте префикс ecdsa-sha2, чтобы конечная строка выглядела так:

ecdsa-sha2-nistp256 256 yP/wF6NAzTSu69QvJkX/A2pGvzT4Vtc9gvj/iW9YjEU=


Ключ ED25519
Для ключа ED25519 выполните следующую команду и отредактируйте результат:

sudo ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key

256 SHA256:Xpuc85iZRODggOCuoZJo/A2OSIJ2P59W81AlwARBR1k root@ip-111-11-11-11 (ED25519)
В возвращаемой строке удалите SHA256:начало ключа и все, что следует за ним. Поместите =символ в конец строки и добавьте ssh-ed25519префикс, чтобы конечная строка выглядела так:

ssh-ed25519 256 Xpuc85iZRODggOCuoZJo/A2OSIJ2P59W81AlwARBR1k=


Какой отпечаток пальца выбрать
Отпечаток пальца может отображаться различными способами, например, в виде последовательности букв SHA-256 или в виде шестнадцатеричных байтов MD5, разделенных двоеточиями. Например:

# SHA-256 letter sequence…
ssh-rsa 2048 6c3k0RwFLVhK7rYa8yDGayedWafip37WOeTXGqP6cRA=
# MD5 hexadecimal colon-separated sequence…
ssh-rsa 2048 cc:68:2d:7c:95:a6:ea:14:5c:a0:14:fa:9a:5b:6e:26

Сервер может использовать разные криптографические алгоритмы. Для каждого стандарта шифрования сервер может иметь отдельный закрытый ключ со своим отпечатком пальца.

Поиск fingerprint  в winscp
Честно говоря, мне потребовалось несколько минут, чтобы понять, где это находится в WinSCP. Ранее я писал в блоге об использовании WinSCP для загрузки файлов через PowerShell, для безопасного подключения вам действительно следует сохранить отпечаток ssh.

Чтобы получить ssh-ключ:

1) Откройте WinSCP и войдите на соответствующий FTP-сервер.

2) Нажмите «Сеанс».

3) Нажмите «Информация о сервере/протоколе».

4) Внизу диалога вы увидите отпечаток вашего сервера.