%3F.png)
Когда я вхожу на SSH-сервер/хост, меня спрашивают, верен ли хэш его открытого ключа, например:
# ssh 1.2.3.4
The authenticity of host '[1.2.3.4]:22 ([[1.2.3.4]:22)' can't be established.
RSA key fingerprint is SHA256:CxIuAEc3SZThY9XobrjJIHN61OTItAU0Emz0v/+15wY.
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.
Чтобы иметь возможность сравнить, я ранее использовал эту команду на SSH-сервере и сохранил результаты в файл на клиенте:
# ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
2048 f6:bf:4d:d4:bd:d6:f3:da:29:a3:c3:42:96:26:4a:41 /etc/ssh/ssh_host_rsa_key.pub (RSA)
По какой-то веской причине (несомненно) одна из этих команд использует другой (более новый?) способ отображения хеша, тем самым существенно помогая злоумышленникам, использующим метод «человек посередине», поскольку для их сравнения требуется нетривиальное преобразование.
Как сравнить эти два хеша или, лучше сказать: заставить одну команду использовать формат другой?
Опция -E
недоступна ssh-keygen
на сервере.
решение1
сш
# ssh -o "FingerprintHash sha256" testhost
The authenticity of host 'testhost (256.257.258.259)' can't be established.
ECDSA key fingerprint is SHA256:pYYzsM9jP1Gwn1K9xXjKL2t0HLrasCxBQdvg/mNkuLg.
# ssh -o "FingerprintHash md5" testhost
The authenticity of host 'testhost (256.257.258.259)' can't be established.
ECDSA key fingerprint is MD5:de:31:72:30:d0:e2:72:5b:5a:1c:b8:39:bf:57:d6:4a.
ssh-keyscan и ssh-keygen
Другой подход — загрузить открытый ключ в систему, которая поддерживает хэши MD5 и SHA256:
# ssh-keyscan testhost >testhost.ssh-keyscan
# cat testhost.ssh-keyscan
testhost ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItb...
testhost ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0U...
testhost ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMKHh...
# ssh-keygen -lf testhost.ssh-keyscan -E sha256
256 SHA256:pYYzsM9jP1Gwn1K9xXjKL2t0HLrasCxBQdvg/mNkuLg testhost (ECDSA)
2048 SHA256:bj+7fjKSRldiv1LXOCTudb6piun2G01LYwq/OMToWSs testhost (RSA)
256 SHA256:hZ4KFg6D+99tO3xRyl5HpA8XymkGuEPDVyoszIw3Uko testhost (ED25519)
# ssh-keygen -lf testhost.ssh-keyscan -E md5
256 MD5:de:31:72:30:d0:e2:72:5b:5a:1c:b8:39:bf:57:d6:4a testhost (ECDSA)
2048 MD5:d5:6b:eb:71:7b:2e:b8:85:7f:e1:56:f3:be:49:3d:2e testhost (RSA)
256 MD5:e6:16:94:b5:16:19:40:41:26:e9:f8:f5:f7:e7:04:03 testhost (ED25519)
решение2
Только отвечаю, как просмотреть локальные ключи, что также видно в другом ответе, но может быть пропущено. По крайней мере, в версии Ubuntu 19.04 SHA256 является форматом по умолчанию для ssh-keygen:
$ ssh-keygen -lf ~/.ssh/id_rsa.pub
2048 SHA256:CxIuAEc3SZThY9XobrjJIHN61OTItAU0Emz0v/+15wY user@host (RSA)
Но вы, конечно, можете явно указать SHA256:
$ ssh-keygen -lf ~/.ssh/id_rsa.pub -E sha256
Если вы хотите просмотреть MD5:
$ssh-keygen -lf ~/.ssh/id_rsa.pub -E md5
2048 f6:bf:4d:d4:bd:d6:f3:da:29:a3:c3:42:96:26:4a:41 user@host (RSA)
Кстати, именно этот формат когда-то использовался GitHub в их списке ключей SSH на вашем аккаунте. Подробности: $man ssh-keygen
.