我的本地机器上有一个 PHP 脚本,用于连接到远程机器。远程机器上没有任何变化。当我通过命令行连接时,使用ssh
终端中的命令,指纹没有任何变化。但是,我存储指纹以检查其安全性的 PHP 脚本生成了指纹不匹配的错误。
检索指纹的相关 PHP 代码行是:
$fingerprint=ssh2_fingerprint($session, SSH2_FINGERPRINT_SHA1);
当我在 Ubuntu 18 上运行 PHP 7.2 时,升级后会检索到与之前不同的指纹。我现在运行的是 PHP 8.1。即使我将配置设置为显示所有内容,该脚本也不会生成任何错误、警告或通知,在旧版本下也不会生成任何错误、警告或通知。
我显然可以更新指纹,但我想了解为什么这个指纹会发生变化,因为这对我来说没有意义,而且当终端的连接没有变化时,我无法想到任何解释为什么它会改变。
答案1
ECDSA
这可能与OpenSSHED25519
在 8.5 版本(2021-03-03 发布)中将默认签名算法从 更改为 有关。
以下是一段引文OpenSSH 8.5 发布日志:
Potentially-incompatible changes
================================
This release includes a number of changes that may affect existing
configurations:
* ssh(1), sshd(8): this release changes the first-preference signature
algorithm from ECDSA to ED25519.
我想你会感兴趣: 什么原因会导致 ssh 指纹改变?