一、查看服务器的真实 Host Key 指纹(服务器端)

1
ls -l /etc/ssh/ssh_host_*.pub

image-20260122200657131

用于确认「这台服务器到底是谁」

1
2
3
ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

输出示例:

Clipboard_Screenshot_1769083661

二、查看 SSH 实际连接到的服务器指纹(客户端)

用于确认「我这次连到的是谁」

1
ssh -vvv -p <PORT> user@<SERVER_IP>

关键行:

1
Server host key: ecdsa-sha2-nistp256 SHA256:<fingerprint>

Clipboard_Screenshot_1769083841

image-20260122201257355

三、查询本地 known_hosts 中的 Host Key 记录

查看 SSH 客户端“记住了谁”

1
ssh-keygen -F '[<SERVER_IP>]:<PORT>'

image-20260122201403164

四、删除冲突或失效的 Host Key(推荐方式)

当服务器身份已确认,但本地记录冲突时使用

1
ssh-keygen -R '[<SERVER_IP>]:<PORT>'

⚠️ 不建议直接手工编辑 ~/.ssh/known_hosts

五、预先获取远端服务器的 Host Key(可信网络中)

用于首次初始化或自动化场景

1
ssh-keyscan -p <PORT> <SERVER_IP>

image-20260122201500273

六、判断 Host Key 是否发生变化(常见组合)

1
2
3
4
5
6
# 本地客户端执行
ssh -vvv -p <PORT> <SERVER_IP>
# 服务器上执行
ssh-keygen -lf /etc/ssh/ssh_host_*.pub
# 本地客户端执行
ssh-keygen -F '[<SERVER_IP>]:<PORT>'

通过三者对比即可判断:

  • SSH 实际连到的服务器是谁
  • 服务器真实身份是谁
  • 本地记录是否一致

七、关于 SSH Host Key 指纹中的 comment

什么是 Host Key 的 comment

SSH Host Key 的 指纹(Fingerprint)本身只由公钥内容决定, 而 comment 只是一个可选的附加说明字段,方便阅读。

image-20260123092623483

典型结构:

1
<key-type> <base64-encoded-key> <comment>

示例(服务器公钥文件中):

1
ecdsa-sha2-nistp256 AAAAE2VjZHNhLX... root@hostname

其中:

  • ecdsa-sha2-nistp256 → 算法
  • AAAAE2VjZHNh...真正参与指纹计算的内容
  • root@hostnamecomment(备注)

image-20260123091752512

comment 不参与指纹计算

comment ≠ hostname ≠ 身份校验依据

一个非常重要、但经常被误解的事实:

SSH 在校验服务器身份时,不关心 comment 写了什么

SSH 的信任逻辑是:

1
(IP, Port) → Host Public Key → Fingerprint

因此:

  • comment 写成 hostname
  • 写成 server-1
  • 写成 prod-db
  • 甚至写成空

都不影响 Host Key 的使用和校验

修改 Host Key 的 comment(不影响指纹)

如果你只是想整理 / 标注 / 规范化 comment,可以安全修改。

1
ssh-keygen -cf /etc/ssh/ssh_host_dsa_key -C 'root@cipherhub.cloud'

image-20260123092329434

known_hosts 中的 comment 说明

在客户端 ~/.ssh/known_hosts 中:

1
[server_ip]:port ecdsa-sha2-nistp256 AAAA... comment
  • comment 仅用于人工识别
  • SSH 不读取、不校验、不匹配 comment
  • 删除 / 修改 comment 不会触发安全警告