SSH 登录指纹验证

526 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

SSH 协议(也称为 Secure Shell)

是一种从一台计算机安全远程登录到另一台计算机的方法。它为强身份验证提供了多种替代选项,并通过强加密保护了通信的安全性和完整性。它是不受保护的登录协议(例如telnet、 rlogin)和不安全的文件传输方法(例如FTP)的安全替代方案。

工作原理

该协议工作在客户端-服务器模型中,这意味着连接是由连接到 SSH 服务器的 SSH 客户端建立的。SSH 客户端驱动连接设置过程并使用公钥加密来验证 SSH 服务器的身份。在设置阶段之后,SSH 协议使用强对称加密和散列算法来确保客户端和服务器之间交换的数据的隐私和完整性。

image.png

SSL 一般是很安全的,但自签SSL证书最容易受到SSL中间人攻击,基于 SSL 的 SSH 登录一般会在第一次要求验证公钥签名。

1、查看服务使用的密钥。

$ ls -1 /etc/ssh/ssh_host*
>> 输出:
/etc/ssh/ssh_host_ecdsa_key
/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key
/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_rsa_key
/etc/ssh/ssh_host_rsa_key.pub

2、对服务器公钥进行签名。

$ cd /etc/ssh/
$ for file in *_key.pub; do   ssh-keygen -E sha256 -lf $file; done
>> 输出:
256 SHA256:hjbZqDPI5X/vRo1rCOYyLW2jLaVuUYRW4olkySmirMo no comment (ECDSA)
256 SHA256:HchbHZxF5IF24Clo64FSIOlGKLx5a/MDBPWKCSK9FIM no comment (ED25519)
2048 SHA256:p1UFjBn1S2aIO5xU4UYeyG3efI/rGnyfolG/e+BFJVo no comment (RSA)

3、远程 SSH 登录,第一次登录会给出服务器公钥的签名。

在这里插入图片描述

此时,需要你肉眼比对终端设备给出的 SHA256 指纹,与步骤二中 SHA256 指纹,有任意一条匹配就能确定连接使用的公钥是对应的服务器的,也就可以安全链接,可以确定没有被中间人攻击。