Podczas łączenia z nowym / nieznanym serwerem (z najnowszym OpenSSH), na przykład:
ssh example.com
Otrzymasz odcisk palca, jak poniżej:
The authenticity of host 'example.org (192.0.2.42)' can't be established.
RSA key fingerprint is SHA256:7KMZvJiITZ+HbOyqjNPV5AeC5As2GSZES5baxy1NIe4.
Are you sure you want to continue connecting (yes/no)?
Jednak odciski palców są zwykle podawane serwerowi w następującej formie:
f6:fc:1c:03:17:5f:67:4f:1f:0b:50:5a:9f:f9:30:e5
Jak mogę sprawdzić autentyczność (bez błędów administratorów serwera w celu dostarczenia odcisku palca SHA256)?
Odpowiedzi:
Wcześniej odcisk palca był podawany jako heksadecymalny skrót md5. Począwszy od OpenSSH 6.8 odcisk palca jest teraz wyświetlany jako base64 SHA256 (domyślnie). Nie można ich bezpośrednio porównać.
Dodali także nową opcję konfiguracji
FingerprintHash
. Możesz włożyćw
~/.ssh/config
celu przywrócenia starej ( mniej bezpiecznej ) wartości domyślnej lub po prostu użyj tej opcji do jednorazowego użytku:co dałoby odcisk palca jako
Mamy nadzieję, że administratorzy serwerów udostępnią oba rodzaje odcisków palców w najbliższej przyszłości.
EDYTOWAĆ:
Jak podano na forach Arch Linux , istnieje również trzecia opcja:
EDYTOWAĆ:
Możesz wygenerować skrót dowolnego klucza podany w książce kucharskiej OpenSSH :
Odzyskaj klucz:
ssh-keyscan example.org > key.pub
/etc/ssh
Wygeneruj skrót:
key.pub
lub uruchomssh-keyscan -t rsa example.org > key.pub
ssh-keygen -l -f key.pub
(domyślny skrót, w zależności od wersji OpenSSH)ssh-keygen -l -f key.pub -E md5
(md5 na bieżącym OpenSSH)awk '{print $2}' ssh_host_rsa_key.pub | base64 -d | sha256sum -b | awk '{print $1}' | xxd -r -p | base64
(sha256 na starym OpenSSH)awk '{print $3}'
nowszych wersji ssh-keyscan, ponieważ format się zmienił)źródło
ssh-keygen -lf
na serwerze daje mi tylko wydruk md5, a przez całe moje życie nie mogę znaleźć, jak zdobyć sha256 ani na stronach podręcznika, ani na stronie www ...awk
1-liniowej linii (nie pasuje do skrótu pokazanego przez mojego klienta)sha256sum -b | awk '{print $1}' | xxd -r -p
można zastąpićopenssl sha256 -binary
nie wymagając zainstalowanego vima. Wynikająca z tego komenda brzmiałaby:awk '{print $2}' ~/.ssh/id_rsa.pub | base64 -d | openssl sha256 -binary | base64
Właśnie stworzyłem mały skrypt bash, który wydrukuje tabelę z odciskami palców dla wszystkich szyfrów kluczowych dozwolonych na serwerze (zgodnie z
/etc/ssh/sshd_config
) zarówno w algo, jakSSH-256
i wMD5
algo. Oto przykładowy wynik:Skrypt będzie działał również na serwerach z
SSH
wersją poniżej6.8
(przed dodaniem-E md5
opcji).Edycja: Zaktualizowano wersje jeszcze nowszych wersji SSH, które przełączały teraz domyślne szyfry z obsługą obrazów ASCII.
To jest po prostu ładny wydruk z wykorzystaniem informacji z
JonnyJD
odpowiedzi. Dzięki.źródło
okazuje się, że ssh-keygen (kiedyś po wersji 6.6; przypuszczalnie 6.8) ma
-E md5
opcję, która spowoduje wydrukowanie odcisku palca jako odcisku palca md5. Jeśli więc możesz samodzielnie pobrać plik klucza publicznego serwera, możesz gossh-keygen -E md5 -l -f ssh_host_rsa_key.pub
podać i uzyskać znajomy odcisk palca.źródło
Następująca linijka działa (przynajmniej) na
Ubuntu 16.04,18.04 / Centos >= 7
(Testowane na serwerach:
openssh 3.9
-openssh 7.4
)Wynik:
źródło
próbował zmodyfikować, aby również losowa grafika znalazła się w tabeli:
... ale tak naprawdę nie jestem programistą, a skrypt nie działa zgodnie z oczekiwaniami. Byłbym wdzięczny, jeśli ktoś może pomóc w naprawie (również czyszczenie). Byłoby miło mieć obok siebie losowe obrazy artystyczne sha256 i md5, aby efektywniej wykorzystać przestrzeń. Zmodyfikowałem również polecenia md5 i sha256, ponieważ oryginalne nie działały dla mnie (prawdopodobnie zbyt nowy system) - tylko sha256 był zapisany w tabeli ze znakiem „=” na końcu, który nie był częścią rzeczywistego odcisku palca i nie mógł go usunąć.
(przepraszam, nie mogłem komentować, ponieważ niedawno się zarejestrowałem)
źródło