GCP虚拟机SSH密钥过期致HTTPS连接失败求助
GCP VM HTTPS连接失败+SSH密钥过期问题解决
问题根源
- SSH密钥过期残留:日志明确报
Invalid ssh key entry - expired key,原密钥在2022-12-06就已过期。虽然你已生成新密钥并更新到元数据(新密钥过期时间2023-12-04),但要么是VM实例未同步最新元数据,要么是实例本地仍留存旧密钥,导致认证异常。 - HTTPS关联影响:SSH密钥异常可能打乱实例服务运行逻辑,或是你的HTTPS服务依赖SSH相关配置,导致443端口服务无法正常启动。同时也需排查HTTPS本身配置问题,但当前优先解决SSH密钥遗留问题。
分步解决
1. 彻底清除旧密钥,确保新密钥生效
- 刷新元数据:从你提供的命令输出看,项目元数据已更新为新密钥,但需强制VM同步配置,执行:
或直接进入GCP控制台,找到实例的元数据标签,删除所有旧密钥条目,仅保留新生成的密钥。gcloud compute instances add-metadata [你的VM实例名] --metadata-from-file ssh-keys=[新密钥文件路径] - 清理实例本地密钥:若能通过控制台浏览器终端登录实例,打开
~/.ssh/authorized_keys文件,删除其中过期的密钥行,仅保留新密钥内容。
2. 排查HTTPS服务本身问题
- 检查防火墙规则:确认GCP防火墙已开放443端口的入站流量,规则需包含
tcp:443,目标覆盖你的VM实例。 - 检查服务运行状态:登录实例后,查看HTTPS服务(如Nginx、Apache)是否正常运行:
重点排查是否存在证书配置错误(如证书过期、路径配置错误)。# 以Nginx为例 sudo systemctl status nginx # 查看错误日志定位问题 sudo tail -f /var/log/nginx/error.log - 检查端口监听情况:确认443端口被HTTPS服务占用:
sudo netstat -tulpn | grep 443
3. 重启实例使配置生效
完成上述操作后,重启VM实例,确保所有配置加载生效:
gcloud compute instances restart [你的VM实例名]
额外提示
从元数据输出可见,你的项目SSL证书配额使用量为0,说明你可能尚未配置HTTPS证书(无论是Let's Encrypt还是GCP管理证书),若无有效证书,HTTPS连接必然失败,需先完成证书配置。
内容的提问来源于stack exchange,提问作者Himanshu Somani
相关产品推荐
相关产品推荐

