linux – 新しいバージョンの openssh で (古い) 16 進形式の SSH 鍵の指紋を取得する

freebsd linux openssh ssh

opensshがキー指紋の表示方法を変更したようです

クライアントマシンからサーバにsshで接続しようとしています

  • クライアント:ubuntu 14.04 で OpenSSH 6.6.1 を実行しています
  • サーバを使用しています。FreeBSD で OpenSSH 7.2p2 が動作しています

クライアントは、サーバの鍵のmd5ハッシュを、以下のように16桁の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ハッシュ)で取得して、それらが同じであることを確認するにはどうすればいいのでしょうか?

EDIT: 古いバージョンの SSH では、私が間違って考えていたように sha1 のチェックサムではなく md5 のチェックサムが与えられます。E オプションでそのチェックサムを使うと (今では受け入れられている答えのように) 希望する出力が得られます

  49  stochastic  2016-06-11


ベストアンサー

クライアントはサーバの鍵の 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

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

70  Jakuje  2016-06-12


結局のところ、SSH Cookbookには、古い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

これは、ssh のクックブックのページのレシピで指定されていた ‘md5sum -b’ に相当する freebsd のものです

sed ‘s/./&:/g; s/..*$//’

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

s/../&:/g;

は、行内のすべての文字のペアを (最後の ‘g’ フラグのおかげで) コロンの後に続く同じペアに置き換えます

s/: .*$//’

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

5  stochastic  2016-06-11


このような場合、私は以下のような小さなスクリプトを使用します (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

Example usage:

$ 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

5  rpr  2017-09-28


タイトルとURLをコピーしました