如何设置SSH密钥的有效期?
美国、香港服务器
如何设置SSH密钥的有效期?
05-20 来源:
先讲关键点:普通 SSH 密钥(id_rsa/id_ed25519)本身没有内置有效期,默认永久有效;要做到 “到期自动失效”,有两条正经路子:
authorized_keys 里加 expiry-time 限制(简单、单台机器)
用 SSH CA 签发带有效期的证书(企业级、统一管控)
下面一步步给你可直接复制的命令。
一、给单台服务器密钥设有效期(最简单)
1. 格式(服务器端~/.ssh/authorized_keys)
在公钥前面加 expiry-time=YYYYMMDDHHMMSS,例如有效期到 2026-12-31 23:59:59:
plaintext
expiry-time=20261231235959 ssh-rsa AAAAB3NzaC1yc2EAAA...
2. 直接命令写入(示例:user01)
bash
运行
su - user01
echo "expiry-time=20261231235959 ssh-rsa AAAAB3NzaC1yc2EAAA..." > ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chown user01:user01 ~/.ssh
时间格式:YYYYMMDDHHMMSS
到期后:直接拒绝登录,不用改配置、不用重启服务。
3. 检查是否生效
bash
运行
ssh user01@服务器IP
# 过期会提示:Authentication refused: bad expiration time
二、用 SSH CA 签发带有效期证书(企业级)
适合多台服务器、统一轮换,OpenSSH 6.8+ 支持。
1. 生成 CA 密钥(只做一次,放在安全机器)
bash
运行
ssh-keygen -t ed25519 -f ssh_ca -N ""
# 得到:ssh_ca(私钥)、ssh_ca.pub(公钥)
2. 服务器信任 CA(所有服务器都要做)
bash
运行
echo "ssh-ed25519 $(cat ssh_ca.pub)" > /etc/ssh/sshd_config.d/ca.conf
echo "TrustedUserCAKeys /etc/ssh/sshd_config.d/ca.conf" >> /etc/ssh/sshd_config
systemctl restart sshd
3. 给用户签发带有效期证书(例如 90 天)
用户本地公钥:~/.ssh/id_ed25519.pub
bash
运行
# -V +90d:有效期90天
# -I user01-cert:证书标识
# -n user01:允许登录的用户名
ssh-keygen -s ssh_ca -I user01-cert -n user01 -V +90d ~/.ssh/id_ed25519.pub
生成:id_ed25519-cert.pub(证书)
4. 用户本地配置使用证书
bash
运行
# 放在 ~/.ssh/
mv id_ed25519-cert.pub ~/.ssh/
chmod 600 ~/.ssh/*
5. 查看证书有效期
bash
运行
ssh-keygen -L -f ~/.ssh/id_ed25519-cert.pub
输出会有:
plaintext
Valid: from 2026-05-20 to 2026-08-18
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快