Linux SSH 公钥指纹验证与密钥轮换实战教程

云丽吖_6264

云丽吖_6264

2026-07-16

748人浏览

原创

ssh公钥指纹验证与密钥轮换是一体两面的安全实践:指纹确保连接目标可信,轮换确保密钥始终新鲜有效;常见故障是连接成功但权限异常或认证被拒,主因是指纹未更新、authorized_keys权限错误或旧密钥残留。

linux ssh 公钥指纹验证与密钥轮换实战教程

SSH 公钥指纹验证和密钥轮换不是两个孤立操作,而是一体两面的安全实践:指纹确保你连的是“对的人”,轮换确保你用的密钥始终是“新的、可信的”。真正出问题时,往往不是登录失败,而是连接成功后权限异常、日志里反复出现 server refused our keyAuthentication refused —— 这类现象背后,十有八九是公钥指纹未更新、authorized_keys 权限错乱,或旧密钥未清理干净。

一、怎么看公钥指纹?别只信 ssh -v 的第一行

每次首次连接新主机或服务器公钥变更时,OpenSSH 会提示类似:

The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:a1b2c3d4e5f6...
Are you sure you want to continue connecting (yes/no)?

这个 SHA256:xxx 就是服务器端公钥的指纹——它不是随机生成的,而是对 /etc/ssh/ssh_host_ecdsa_key.pub 内容做 SHA-256 哈希后的确定性结果。

要手动验证或比对,执行:

  • 查服务器当前主机密钥指纹ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
  • 查客户端已存指纹(~/.ssh/known_hosts)ssh-keygen -F 192.168.1.100 -l
  • 强制重置某主机记录(慎用)ssh-keygen -R 192.168.1.100

注意:如果服务器更换了主机密钥(比如重装系统、迁移实例),但客户端 known_hosts 还存着旧指纹,就会报 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!。这不是错误,而是安全提醒——必须人工确认是否为预期变更。

Linux Journey
Linux Journey

当用户想学习Linux基础、命令行、文件系统等时,在LabEx查找并推荐免费的Linux Journey课程。

下载

二、密钥轮换四步不能跳:从生成到清理

轮换 ≠ 删除旧密钥 + 生成新密钥。漏掉任一环节,都可能造成“新密钥登不上、旧密钥不敢用”的尴尬局面。

  • 生成新密钥对:优先用 ssh-keygen -t ed25519 -a 100 -C "deploy@prod-202606"(Ed25519 更快更安全;-a 100 提升私钥抗暴力破解能力)
  • 上传并激活新公钥:用 ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host,或手动追加到 ~/.ssh/authorized_keys 后执行 chmod 600 ~/.ssh/authorized_keys
  • 验证新密钥可用:开新终端,用 ssh -i ~/.ssh/id_ed25519 user@host 测试登录,确认无密码、无报错
  • 清理旧密钥痕迹:在 authorized_keys 中删除对应旧公钥行;检查 ~/.ssh/known_hosts 是否含旧主机指纹(用 ssh-keygen -F host -l 查);最后才删本地旧私钥文件

三、为什么轮换后还是连不上?重点查这三处

常见故障不是密钥本身坏了,而是环境状态不一致。以下检查应逐项执行,不跳步:

  • 目标用户家目录与 .ssh 权限:必须满足 chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys;若 StrictModes yes(默认),权限宽松(如 755)会导致直接拒绝密钥
  • sshd_config 配置有效性:确认 PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys 未被注释;PasswordAuthentication no 是可选项,但开启时务必确保新密钥已验证通过
  • SELinux 或 AppArmor 干预:在 CentOS/RHEL 或 Ubuntu 启用强制访问控制的环境中,ls -Z ~/.ssh/authorized_keys 应显示 ssh_home_t(SELinux)或对应上下文;否则需修复:restorecon -Rv ~/.ssh

四、自动化轮换建议:用脚本固化检查点

人工轮换易遗漏,尤其批量主机场景。一个轻量级检查脚本能覆盖 80% 常见陷阱:

#!/bin/bash
HOST=$1; USER=$2
echo "[INFO] 检查 $USER@$HOST 密钥轮换就绪状态"
ssh $USER@$HOST "ls -ld ~ ~/.ssh ~/.ssh/authorized_keys 2>/dev/null" 2>/dev/null
ssh $USER@$HOST "grep -c 'ssh-ed25519' ~/.ssh/authorized_keys 2>/dev/null" 2>/dev/null
ssh $USER@$HOST "sshd -T | grep -E '^(pubkeyauthentication|passwordauthentication|strictmodes)'" 2>/dev/null

运行 ./check.sh 192.168.1.100 deploy,输出即反映关键路径是否畅通。生产环境可将其集成进 Ansible playbooks 或 CI/CD 流水线,在密钥更新后自动触发验证。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3570

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3113

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2173

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5150

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

4822

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

2913

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2405

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2619

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

CLion 远程开发实战
CLion 远程开发实战

共0课时 | 0人学习