openssh 似乎改变了它显示关键指纹的方式。
我正在尝试从客户端机器 ssh 到服务器:
客户端将服务器密钥的 md5 哈希报告为 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 编码版本,而不是十六进制数字。
如何以与(旧)客户端报告的格式(冒号分隔的十六进制数字,sha1 哈希)相同的格式获取服务器密钥的校验和,以检查它们是否相同?
编辑: 旧版本的 SSH 提供md5校验和,而不是我错误地认为的 sha1 校验和。在 -E 选项中使用该校验和(正如现在接受的答案应该说明的那样)可提供所需的输出。
当我尝试此命令时,它失败了:
ssh -o FingerprintHash=sha256 example.com
Run Code Online (Sandbox Code Playgroud)
错误信息: command-line: line 0: Bad configuration option: fingerprinthash
为什么是这样?此选项是否已从 OpenSSH 中删除?我的 ssh 客户端版本是OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.10, OpenSSL 1.0.1f 6 Jan 2014.
我的目的是用系统管理员发送给我的指纹验证来自客户端输出的指纹,该指纹采用另一种格式(base64 编码的 SHA256,我相信)。
所以最近有消息称 OpenSSH 放弃了对 SHA-1 登录的支持,我试图了解他们指的是哪种格式。多年来,我一直通过ssh-keygen -t rsa -b 2048. 这是不再推荐的类型,我应该切换到例如 ECDSA 吗?
在此手册页,https://www.man7.org/linux/man-pages/man1/ssh-keygen.1.html,默认选项rsa为-t参数解释说,所选择的选项是使用SHA1签名,所以一应该选择rsa-sha2-256例如。
我尝试检查密钥的类型,ssh-keygen -l -f key它告诉我它确实是 SHA256 类型。如果是这样,那么它解决了我的问题,但欢迎澄清一些问题。谢谢你!
消息来源:https : //www.zdnet.com/article/openssh-to-deprecate-sha-1-logins-due-to-security-risk/