openssh'ın yeni sürümünde SSH anahtar parmak izini (eski) onaltılık biçimde alma


40

Openssh'ın ana parmak izlerini gösterme şeklini değiştirdiği anlaşılıyor.

Bir istemci makineden bir sunucuya ssh yapmaya çalışıyorum:

  • müşteri: ubuntu 14.04 OpenSSH 6.6.1 çalıştıran
  • sunucu: FreeBSD, OpenSSH 7.2p2’yi çalıştırıyor.

İstemci, sunucunun anahtarının md5 değerini 16 çift onaltılık basamak dizisi olarak bildirir:

a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a

Sunucu sha256 karmasını kullanmaya varsayılan değer, ancak bu yanıt sayesinde sha1 karmasını çalıştırarak vermeye zorlayabilir:

[root@host /etc/ssh]# ssh-keygen -l -E sha1 -f ssh_host_ecdsa_key.pub

Sonuç şöyle görünmesini istiyorum:

a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a

ama bunun yerine şunu alıyorum:

256 SHA1:KIh0ejR4O+RqrSq7JdGAASddRfI root@host.local (ECDSA)

Bana öyle geliyor ki, onaltılık basamak yerine parmak izinin base64 ile kodlanmış bir versiyonu gösteriliyor.

Sunucunun anahtarının sağlama toplamını, (eski) istemcinin (iki nokta üst üste basamaklı onaltılık basamak, sha1 hash) bildirdiği şekilde, aynı olduklarını kontrol etmek için nasıl alabilirim?

EDIT: SSH'nin eski sürümü, yanlışlıkla düşündüğüm gibi sha1 sağlama toplamı değil md5 sağlama toplamını veriyor . -E seçeneğinde bu sağlama toplamının (şimdi kabul edilen cevap belirtilmesi gerektiği gibi) kullanılması istenen çıktıyı verir.

Yanıtlar:


52

Müşteri, sunucunun anahtarının sha1 hash değerini 16 çift onaltılık basamak dizisi olarak rapor eder:

    a7:b1:3e:3d:84:24:a2:5a:91:5f:6f:e9:cf:dd:2b:6a

Bu MD5 hash.

Koşarken gördüğünüz gibi

ssh-keygen -l -E md5 -f ssh_host_ecdsa_key.pub

Size cevabınızda açıkladığınız böyle bir harakiri olmadan ihtiyacınız olan aynı parmak izi.


1
Ne yazık ki, bu işe yaramıyor. Sorum, önerilen komutunuzu çalıştırmanın sonucunu içerir. Daha yeni ssh-keygen sürümleri, md5 karma değerini onaltılık bir dize yerine (base64 olarak kodlanmış?) Bir dize olarak verir. "Bütün bu harakiri" (uygun bir açıklama!), Openssh araçlarının yeni sürümünden eski stil altıgen bir dize almanın en kolay yoludur.
Stokastik

FreeBSD bir şeyi kırmazsa (veya MD5 desteğini kaldırmazsa), çalışmaması için hiçbir neden yoktur. Komutunuzun sha1yerine yanlış listelediğini unutmayın md5! Openssh-6.9 ile eski Ubuntu sürümüne sahibim ama gayet iyi çalışıyor.
Jakuje

1
sha1 yerine md5 ... bunu nasıl özlediğimden emin değilim. Bu gerçekten eşleşen çıktı veriyor.
stochastic

Ters problemim var. Ben md5 var ve diğer formatı istiyorum. Onu nasıl alırım?
Gabriel Staples

1
Ubuntu'da komut çalıştırıldığında çalışır. Centolarda komut çalıştırıldığında çalışmaz.
Marinos An

5

Görünüşe göre, SSH Yemek Kitabı eski hex formatında manuel olarak anahtar üretmek için bir yol var. Bunu freebsd sunucusunda kullandım.

awk '{print $ 2}' key.pub | base64 -d | md5 | sed / s /../&:/ g; s /:. * $ // '

Bunu yıkmak:

awk '{print $ 2}' key.pub

Anahtarın kendisi olan "key.pub" içindeki ikinci (boşlukla ayrılmış) sütunu yazdır

base64 -d

anahtar base64 kodludur. Bu, anahtarın gerçek baytlarını verir.

md5

bu freebsd'nin ssh yemek kitabı sayfasındaki tarifte belirtilen 'md5sum -b' eşdeğeridir

sed / s /../&:/ g; s /:. * $ // '

Burada iki sed komut var:

s /../&:/ g;

Satırdaki her karakter çiftini (sonunda 'g' bayrağı sayesinde) aynı çifti ve ardından iki nokta üst üste

s /:. * $ // '

takip eden bir kolonu çıkarın (bir kolonu, ardından boşluğun ardından çizginin sonuna kadar hiçbir şeyi olmayan bir yeri takip edin).


4

Bu gibi durumlarda aşağıdaki küçük betiği kullanıyorum (Debian ve Ubuntu'da test edilmiştir):

#!/bin/sh

# Gather the public ssh host keys for the given host
# and for each key print the fingerprint in hex format using the given
# checksum command (e.g. md5sum, sha256sum, ...)

if [ "$#" != 2 ]; then
  echo "usage: $0 hostname checksum_command"
  exit 1
fi

ssh-keyscan $1 2>/dev/null | while read -r line; do
  echo "Scanned key:"
  echo $line
  echo "$2 fingerprint:"
  echo $line | awk '{print $3}' | base64 -d | $2 -b | awk '{print $1}' | sed 's/../&:/g' | sed 's/:$//'
  echo
done

Örnek kullanım:

$ myscript host.example.com md5sum
Scanned key:
host.example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJUXq7vpcEpnZQxxiLw/tdg8ui4LoqbW1O5nGyLtGw49
md5sum fingerprint:
6c:ef:26:f7:98:ad:ed:5b:cc:ff:83:13:46:c9:f6:79

Scanned key:
host.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC4aLMajBvisnWNR2VX5K1KEkNeRmzlcs+svbY6/DiumMTZNtqB5duZjGkMmEbIclHaT7rQG9efAWsNhai5cJVRZ4VX1Gu/TLycEk4OY56MrrWjQYweSUr/W6E0eVCf7gh/ym2vMcevct4373fGDdlogk9Wa97lDV6PUXRy/znxRlo3tBc6KMOZIBoPu8UjeLr2ZPNPjO6hXX/96HbYfboxjhMl5eb8AWR0MGd4qU7RZZa2XhT4/4eSo8h9gEq8V3tasB24fMdw3K+HRiDyZm8uoNq+IrJlC22pBpzxRQtsv0Nd+uC5pK/UPVI3AFfdHMrmn7IHRio8aEaTloM6MRysGMtXE0kFQ/pV2U3TBmK/9wxID83qMDsQeUH4oTyjSJ0dCBuqgVQUg44z5qXVOK7gruvZSTyH7DsIyAXhlvLNwdtXPJ4HPQ90ZxLpiFWYgSPErQgbfgKeFkoSQiSP1M+UMkITCGRKMeUeDINheRJh/5y8+C3DjE54xyI4903ztyI7HqgVTOOFCtf+dlhCuS6+J20PFXEHDMdGCwmPQrKOG9Rb4NBxuvtn7MxJnwnlIu3nhDjr8SlZDOTvuK+bLpc4AZwEsNY7ANKFvj2mqE6hjkhu+x7khg84VQ6BKOmHIQnMrCpqICaNgB7Vz2d183BETrnfKQaPh79G5cQox5vwvw==
md5sum fingerprint:
b2:9c:cd:30:b1:38:e3:d1:17:d6:73:eb:03:9a:80:83

$ myscript host.example.com sha256sum
Scanned key:
host.example.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC4aLMajBvisnWNR2VX5K1KEkNeRmzlcs+svbY6/DiumMTZNtqB5duZjGkMmEbIclHaT7rQG9efAWsNhai5cJVRZ4VX1Gu/TLycEk4OY56MrrWjQYweSUr/W6E0eVCf7gh/ym2vMcevct4373fGDdlogk9Wa97lDV6PUXRy/znxRlo3tBc6KMOZIBoPu8UjeLr2ZPNPjO6hXX/96HbYfboxjhMl5eb8AWR0MGd4qU7RZZa2XhT4/4eSo8h9gEq8V3tasB24fMdw3K+HRiDyZm8uoNq+IrJlC22pBpzxRQtsv0Nd+uC5pK/UPVI3AFfdHMrmn7IHRio8aEaTloM6MRysGMtXE0kFQ/pV2U3TBmK/9wxID83qMDsQeUH4oTyjSJ0dCBuqgVQUg44z5qXVOK7gruvZSTyH7DsIyAXhlvLNwdtXPJ4HPQ90ZxLpiFWYgSPErQgbfgKeFkoSQiSP1M+UMkITCGRKMeUeDINheRJh/5y8+C3DjE54xyI4903ztyI7HqgVTOOFCtf+dlhCuS6+J20PFXEHDMdGCwmPQrKOG9Rb4NBxuvtn7MxJnwnlIu3nhDjr8SlZDOTvuK+bLpc4AZwEsNY7ANKFvj2mqE6hjkhu+x7khg84VQ6BKOmHIQnMrCpqICaNgB7Vz2d183BETrnfKQaPh79G5cQox5vwvw==
sha256sum fingerprint:
f4:61:58:e4:90:65:c4:70:98:7f:d1:40:0a:d8:d9:79:14:e6:91:dc:b6:ed:91:8c:c0:df:d9:65:db:dd:a0:18

Scanned key:
host.example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJUXq7vpcEpnZQxxiLw/tdg8ui4LoqbW1O5nGyLtGw49
sha256sum fingerprint:
4b:73:d1:d7:80:87:46:64:56:71:64:10:7a:66:83:9b:c7:58:39:0b:16:74:dd:9b:d9:4b:e5:d5:61:7e:99:45
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.