server-memo.net

SSHサーバのRSA fingerprintの確認方法

      2016/01/22

確認環境

CentOS 7

RSA finger printの確認方法

クライアントからSSHでサーバに接続する際、初回に接続先サーバが正しいかの確認メッセージが表示されます。(正しくはクライアントにRSA鍵の情報が保存されていな状態)

下記は、192.168.1.100というサーバ接続した際のログですが、RSAkeyの情報(fingerprint)が表示されています。

$ ssh 192.168.1.100
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
RSA key fingerprint is 33:95:b2:19:c0:b0:e4:91:a0:55:94:65:4a:af:58:c9.
Are you sure you want to continue connecting (yes/no)?

事前にサーバ管理者より入手しておいたRSAのfingerprintと、このメッセージに表示されているfingerprintが一致していれば、接続しようとしているサーバが正しいという事になります。

fingerprint確認方法

では、サーバ側のどこにRSAのfingerprintが格納されているのかというと、「/etc/ssh/ssh_host_rsa_key.pub」というファイルがRSAの公開鍵となり、このファイルを「ssh-keygen」コマンドで確認することで、fingerprint情報を見ることが出来ます。

実際にfingerprintを表示させてみます。

ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub 
2048 33:95:b2:19:c0:b0:e4:91:a0:55:94:65:4a:af:58:c9   (RSA)

このようにfingerprintを表示させることが出来ました。

ちなみに直接「cat」コマンドなどで「ssh_host_rsa_key.pub」ファイルをみてもRSAの公開鍵内容が下記のように表示されるだけで、fingerprintはわかりません。

# cat /etc/ssh/ssh_host_rsa_key.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/PfchCsFTk+CB+6hTyve5Bgd0xye0fRWR2B7DXV4etKt5NhXwUxJ26np8ZXe2AMswewFNra2MpIdVpgtij8yDLPLYIznd8djSJyqv9MTwjdahDhpKn7s8D/8grADWuaCWk7uujLU4O+2fdCJDdIjj0IEHnXTYeBF+3kJq17SitNm66EyCu7v4NmbIYerQtXgtazrDmrPyiYLyTWX9U0cqMtj1QEbyMvfCeSGJYCJbwpe3p/bk5125aV8JTSaybDKe015ott582XohIS/G0/5mZ/uHCHIJMIqXtUhU+aeZySKBjo8tY8CLZKisfbfkXBtgiFLbOBMKHo0KVG4Zg3Y

ちなみに、このファイルの内容はSSHで接続されると、クライアントknow_hostsに書き込まれ、2度目以降の接続の際にはクライアント側ではfingerprintの確認メッセージは表示されなくなります。

 - SSH