opensshの新しいバージョンで(古い)16進形式でSSHキーフィンガープリントを取得する


40

opensshがキーフィンガープリントの表示方法を変更したようです。

私はクライアントマシンからサーバーにsshしようとしています:

  • クライアント:OpenSSH 6.6.1を実行するubuntu 14.04
  • サーバー:OpenSSH 7.2p2を実行しているFreeBSD。

クライアントは、次のように、サーバーのキーのmd5ハッシュを16桁の16桁のシーケンスとして報告します。

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

サーバーはデフォルトでsha256ハッシュを使用しますが、この回答のおかげで、次のコマンドを実行することで強制的にsha1ハッシュを与えることができます。

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

結果は次のようになります。

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

しかし、代わりに私はこれを取得します:

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

base64でエンコードされた指紋のバージョンが16進数ではなく表示されているように見えます。

(古い)クライアント(コロンで区切られた16進数、sha1ハッシュ)によって報告されたものと同じ形式でサーバーのキーのチェックサムを取得して、それらが同じであることを確認するにはどうすればよいですか?

編集: SSHの古いバージョンは、誤って考えたsha1チェックサムではなくmd5チェックサムを提供します。-Eオプションでそのチェックサムを使用すると(現在受け入れられている答えが示すとおり)、目的の出力が得られます。

回答:


52

クライアントは、次のように、サーバーのキーのsha1ハッシュを16桁の16桁のシーケンスとして報告します。

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

これはMD5ハッシュです。

ご覧のとおり

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

あなたがあなたの答えで説明しているようなハラキリなしであなたに必要な同じ指紋を取得します。


1
残念ながら、これは機能しません。私の質問には、提案されたコマンドを実行した結果が含まれています。ssh-keygenの新しいバージョンでは、md5ハッシュを16進数文字列ではなく(base64エンコード?)文字列として提供します。「すべてのハラキリ」(適切な説明!)は、opensshツールの新しいバージョンから古いスタイルの16進文字列を取得するための最も簡単な方法です。
確率的

FreeBSDが何かを壊さない限り(またはMD5サポートを削除しない限り)、動作しない理由はありません。コマンドのsha1代わりにmd5!openssh-6.9でUbuntuのバージョンが古くなっていますが、問題なく動作します。
-Jakuje

1
sha1の代わりにmd5 ...私がそれを見逃した方法がわからない。実際、一致する出力が得られます。
確率的

私は反対の問題を抱えています。md5があり、他の形式が必要です。どうすれば入手できますか?
ガブリエルステープルズ

1
コマンドがubuntuで実行されたときに動作します。コマンドがcentosで実行されると機能しません。
マリノス

5

結局のところSSHクックブックには古い16進形式のキーを手動で生成する方法があります。これをfreebsdサーバーで使用しました。

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

これを分解する:

awk '{print $ 2}' key.pub

「key.pub」の2番目の(スペースで区切られた)列を出力します。これはキーそのものです

base64 -d

キーはbase64でエンコードされています。これにより、キーの実際のバイトが出力されます

md5

これは、sbsクックブックページのレシピで指定された 'md5sum -b'と同等のfreebsdです。

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

ここには2つのsedコマンドがあります。

s /../&:/ g;

行のすべての文字のペアを(末尾の 'g'フラグのおかげで)同じペアの後にコロンを付けて置き換えます

s /:。* $ // '

末尾のコロンを削除します(コロンの後にスペースが続き、行の最後まで何も続かないものを置き換えます)。


4

このような場合、次の小さなスクリプト(DebianおよびUbuntuでテスト済み)を使用します。

#!/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

使用例:

$ 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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.