使用的命令
显示存储在服务器上的公共主机密钥的ascii-art(要在服务器端完成,您通过ssh连接到TO)。
ssh-keygen -l -v -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub
-l:显示指定公钥文件的指纹。
-v:视觉(ascii-art)
-E md5:用于计算指纹的哈希算法(“ md5”或“ sha256”)。(如果可用,则首选“ sha256”)。(在旧版本的ssh-keygen中可能不可用)
-f:文件
显示远程服务器公共主机密钥的ascii-art(要在客户端完成,您通过ssh从FROM连接的密钥):
ssh -o visualhostkey=yes -o FingerprintHash=md5 <host_server_to_connect>
-o:选项
visualhostkey:视觉(ascii-art)
FingerprintHash:要使用的哈希算法(使用与从服务器获得的哈希算法相同的值:md5或sha256)
如何检查主机/服务器的真实性
首先,1.在服务器上本地完成(您要通过ssh连接TO的服务器):它将为您提供第一本ascii-art。打印或拍照。
其次,2.将在第一个SSH连接上完成;它将显示第二种ascii艺术。如果ascii艺术相同,那么您可以对“我信任吗?”回答是。问题(即Are you sure you want to continue connecting (yes/no)
)。
例
$ ssh-keygen -l -v -f /etc/ssh/ssh_host_ecdsa_key.pub
256 2e:a6:b3:27:14:12:0b:79:df:9a:7f:bd:4d:b1:e0:b6 (ECDSA)
+--[ECDSA 256]---+
| . |
|o o |
| o + . |
| o o . |
| . + S . . |
| + . . . o |
| . .o ..o o |
| ooo....+ |
| o= . E.. |
+-----------------+
$ ssh -o visualhostkey=yes -o FingerprintHash=md5 192.168.12.211
The authenticity of host '192.168.12.211 (192.168.12.211)' can't be established.
ECDSA key fingerprint is MD5:2e:a6:b3:27:14:12:0b:79:df:9a:7f:bd:4d:b1:e0:b6.
+---[ECDSA 256]---+
| . |
|o o |
| o + . |
| o o . |
| . + S . . |
| + . . . o |
| . .o ..o o |
| ooo....+ |
| o= . E.. |
+------[MD5]------+
Are you sure you want to continue connecting (yes/no)?
一些更多的解释
第一个命令将显示与您输入的文件指纹(以及指纹本身)相对应的ascii-art。输入的文件是服务器的公共主机密钥。当客户端连接时(不仅是第一次),服务器将发送其公共主机密钥。此公共主机密钥将在以下位置搜索~/.ssh/known_hosts
。如果公用密钥在文件中,则可以:主机(服务器)已知,因此我们继续下一步以验证用户身份(本文中不介绍user auth)。如果公钥不在文件中,则客户端将使用哈希算法计算此公钥的指纹(不同的哈希算法将给出不同的指纹)。显示先前计算出的该指纹(如果提供了相应选项,还会显示ascii-art),您将不得不回答是或否,这取决于您识别出该指纹或否(该指纹是密码的公共主机密钥的图像/哈希)。服务器)。如果您选择是,则服务器的公钥(不是其指纹)将添加到文件中~/.ssh/known_hosts
。
我们可以注意到,该~/.ssh/known_hosts
目录位于您的主目录(〜)下,因为您信任该主机(服务器),但是其他用户可能不信任您。另外,服务器的主机公钥也不依赖于用户,因此将其存储在中/etc/ssh/
。
第二个命令将显示从host_server_to_connect接收到的公共密钥的指纹和密码(根据选项中给出的哈希算法)。它与仅执行ssh相同,但具有更多可视选项,因此连接将以与普通ssh连接相同的方式继续。
-E
开关极有可能没有帮助。