1. SSH密钥过期问题的发现与影响
那天我正在尝试通过SSH连接一台许久未访问的服务器,突然收到"Permission denied (publickey)"的错误提示。作为常年与Linux服务器打交道的运维人员,我第一反应是检查密钥权限和known_hosts文件,但排查无果后突然意识到——可能是密钥本身过期了。
SSH密钥对(公钥+私钥)作为现代服务器认证的核心机制,其安全性建立在密钥有效性的基础上。与很多人认知不同,SSH密钥确实可以设置有效期,这个特性在金融、医疗等合规要求严格的行业尤为常见。当密钥过期时,系统会完全拒绝连接,就像信用卡过期无法刷卡一样。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 密钥有效期机制解析
2.1 OpenSSH中的密钥时效控制
现代OpenSSH(7.8+版本)支持通过-V参数为密钥对设置有效期:
bash复制ssh-keygen -t ed25519 -V +52w -f ~/.ssh/prod_access
这条命令创建了一个有效期为52周(1年)的ED25519密钥对。时间格式支持:
- 绝对时间:
YYYYMMDD(如-V 20241231) - 相对时间:
+n单位(单位包括d天/w周/m月)
2.2 有效期在密钥文件中的体现
使用ssh-keygen -L -f keyfile查看密钥元数据时,有效期会显示为:
code复制Valid: from 2023-01-01T00:00:00 to 2024-01-01T00:00:00
没有显式设置有效期的密钥会显示为forever,但实际可能受服务器端策略限制。
3. 密钥过期诊断与更新流程
3.1 诊断密钥状态
当连接被拒绝时,通过详细模式获取更多信息:
bash复制ssh -vvv user@host
在输出中搜索certificate has expired或validity period等关键词。
对于已存在的密钥,检查有效期:
bash复制ssh-keygen -L -f ~/.ssh/id_ed25519 | grep -A2 Validity
3.2 密钥更新操作指南
- 生成新密钥对(推荐ED25519算法):
bash复制
