![确定 Windows 10 主机的“ECDSA 密钥指纹”](https://linux22.com/image/1645350/%E7%A1%AE%E5%AE%9A%20Windows%2010%20%E4%B8%BB%E6%9C%BA%E7%9A%84%E2%80%9CECDSA%20%E5%AF%86%E9%92%A5%E6%8C%87%E7%BA%B9%E2%80%9D.png)
在两台 Linux 机器之间设置 SSH 功能时,我面临以下问题:
The authenticity of host 'x.x.x.x (y.y.y.y)' can't be established.
ECDSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)?
我使用以下命令(在主题主机(服务器)中)来验证所述指纹是否正确:
ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
但是,当从 Linux SSH 客户端到 Windows 10 SSH 服务器设置 SSH 功能时,面临同样的挑战,如何从所述 Windows 10 SSH 服务器中提取所述 ECDSA 密钥指纹?
答案1
Windows 10 SSH 服务器也是 OpenSSH,包含相同的命令。它将主机密钥存储在 中C:\ProgramData\ssh
。
ssh-keygen -lf C:/ProgramData/ssh/ssh_host_ecdsa_key.pub
ssh-keyscan localhost | ssh-keygen -lf -
第三方 SSH 服务器可能有自己的命令,例如 Bitvise WinSSHD 有一个用于主机密钥管理的图形界面,但ssh-keyscan
也可以与这些命令一起使用。
答案2
事实证明,我使用的是旧版本的 SSH(6.7)。为了获取与 OP 中所示格式相同的 ECDSA 密钥指纹,需要在 Windows 10 主机上以管理员权限运行以下命令:
ssh-keygen -l -E md5 -f C:/ProgramData/ssh/ssh_host_ecdsa_key.pub
我能够根据 user1686 提供的信息拼凑出这个命令
更新:仅供参考,以上信息适用于Debian 杰西在 Linux 客户端上(服务器是 Windows 10 机器)。
在下面Debian Stretch:
在上述 Linux 客户端上:
~$ ssh -V
OpenSSH_7.4p1 Debian-10+deb9u8, OpenSSL 1.0.2u 20 Dec 2019
在所述 Windows 10 服务器上(命令行):
C:\Users\booboo>ssh -V
OpenSSH_9.4p1, OpenSSL 1.1.1v 1 Aug 2023
在这种情况下,为了获取所需格式的 ECDSA 密钥指纹,需要在 Windows 10 主机上以管理员权限运行以下命令:
ssh-keygen -lf C:/cygwin64/etc/ssh_host_ecdsa_key.pub
我不知道为什么ssh_主机_ecdsa_key.pub存档于cygwin64文件夹必须使用(相对于驻留在程序数据文件夹,如之前所称的Debian 杰西)。