ssh
新しいマシンを起動すると、いつもこのメッセージが表示されます。
12:f8:7e:78:61:b4:bf:e2:de:24:15:96:4e:d4:72:53
それは何の略ですか? すべてのマシンが常に同じ指紋を持つことになりますか?
これらの指紋はどのように生成されるのでしょうか? どのようなパラメータに依存しているのでしょうか?
答え1
フィンガープリントはホストの公開キーに基づいており、通常はファイルに基づいています/etc/ssh/ssh_host_rsa_key.pub
。一般的に、接続先のホストを簡単に識別/検証するためのものです。
フィンガープリントが変わる場合、接続先のマシンの公開キーが変更されています。これは悪いことではないかもしれませんが (ssh を再インストールすると発生します)、同じドメイン/IP の別のマシンに接続していること (ロード バランサーなどを介して接続している場合に発生します)、または中間者攻撃の標的になっていることを示している可能性もあります。中間者攻撃では、攻撃者が何らかの方法で ssh 接続を傍受/再ルーティングして別のホストに接続し、ユーザー名/パスワードをスヌーピングしている可能性があります。
結論:指紋が変更されたという警告が表示された場合は、注意して、安全な接続で正しいホストに実際に接続していることを再確認してください。ほとんどの場合、これは無害ですが、潜在的な問題を示している可能性があります。
見る:http://www.lysium.de/blog/index.php?/archives/186-How-to-get-ssh-server-fingerprint-information.html
そして:http://en.wikipedia.org/wiki/公開鍵フィンガープリント
答え2
次のようにして公開鍵のフィンガープリントを生成できますssh-keygen
:
ssh-keygen -lf /path/to/key.pub
具体的な例(RSA 公開鍵を使用する場合):
$ ssh-keygen -lf ~/.ssh/id_rsa.pub
2048 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff /Users/username/.ssh/id_rsa.pub (RSA)
最初の部分(2048)
はビット単位のキーの長さ、2 番目の部分(00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff)
は公開キーのフィンガープリント、3 番目の部分は公開キー ファイル自体の場所です。
OpenSSHの新しいバージョンでは、16進数のMD5の代わりにBase64でエンコードされたSHA-256が表示されます。従来のスタイルのハッシュを表示するには、
$ ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub
答え3
フィンガープリントは、Base64 でエンコードされた公開キー内のバイナリ データに対する MD5 です。
$ ssh-keygen -f foo
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in foo.
Your public key has been saved in foo.pub.
The key fingerprint is:
65:30:38:96:35:56:4f:64:64:e8:e3:a4:7d:59:3e:19 andrew@localhost
The key's randomart image is:
+--[ RSA 2048]----+
| +*..+* |
| =. +.= |
| . . .o . |
| o+ E |
| S= . + o |
| . o o + |
| . . |
| |
| |
+-----------------+
$ cat foo.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp andrew@localhost
$ echo 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDEbKq5U57fhzQ3SBbs3NVmgY2ouYZfPhc6cXBNEFpRT3T100fnbkYw+EHi76nwsp+uGxk08kh4GG881DrgotptrJj2dJxXpWp/SFdVu5S9fFU6l6dCTC9IBYYCCV8PvXbBZ3oDZyyyJT7/vXSaUdbk3x9MeNlYrgItm2KY6MdHYEg8R994Sspn1sE4Ydey5DfG/WNWVrzFCI0sWI3yj4zuCcUXFz9sEG8fIYikD9rNuohiMenWjkj6oLTwZGVW2q4wRL0051XBkmfnPD/H6gqOML9MbZQ8D6/+az0yF9oD61SkifhBNBRRNaIab/Np7XD61siR8zNMG/vCKjFGICnp' \
| base64 -D | md5
6530389635564f6464e8e3a47d593e19
md5sum 6530389635564f6464e8e3a47d593e19 は、キーが生成された際に表示されるフィンガープリントで、区切りのコロンが付いていません。
ただし、AmazonがEC2キーペアコンソールに表示するフィンガープリントを扱う場合は、 残念ながらそれは別の問題かもしれない32桁の16進文字列の場合は、上記の標準MD5 SSH公開鍵の指紋です。しかし、40桁の16進文字列の場合は、実際にはSHA1から計算された指紋です。秘密鍵PKCS#8 形式:
$ openssl pkcs8 -in foo -nocrypt -topk8 -outform DER | openssl sha1 -c
e2:77:39:d3:53:a7:62:68:5f:da:82:0e:99:61:30:64:a2:88:c4:58
答え4
Azure Devopsに存在するフィンガープリントを確認するには、以下を使用できます。
$ ssh-keygen -E md5 -lf .ssh/id_rsa.pub
2048 MD5:ba:42:24:87:d6:7b:71:a2:3e:b5:9a:31:b2:2c:e0:00 CrazyGirrafe@Australasia (RSA)