You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Packer复用SSH密钥对构建EC2镜像时的SSH认证错误

问题排查与解决方案

核心原因1:Packer SSH认证配置冲突

你当前配置同时开启了ssh_agent_auth = true和指定了ssh_private_key_file,Packer会优先使用SSH Agent做认证,若Agent中未加载对应私钥就会认证失败。

  • 解决方法二选一:
    • 关闭SSH Agent认证:将配置中的ssh_agent_auth改为false,强制Packer使用你指定的私钥文件做认证
    • 将私钥添加到本地SSH Agent:执行命令 ssh-add /Users/movmac024/.ssh/mykey.pem 后再运行Packer构建命令

核心原因2:本地私钥文件权限异常

SSH要求私钥文件仅当前用户可读写,权限过高会被SSH客户端拒绝使用。

  • 解决方法:执行命令调整私钥权限:chmod 600 /Users/movmac024/.ssh/mykey.pem

核心原因3:SSH用户名配置错误

不同操作系统的默认SSH用户名存在差异,你填写的var.ssh_username需要和源AMI的系统匹配:

  • Amazon Linux/Amazon Linux 2 默认用户为ec2-user
  • Ubuntu 默认用户为ubuntu
  • CentOS 默认用户为centos
  • RHEL 默认用户为ec2-user
  • 自定义系统请确认你预设的可SSH登录的用户名

核心原因4:自定义源AMI无公钥注入能力

如果你使用的源AMI是自己的EC2快照制作的自定义镜像,且未预装cloud-init服务,AWS无法自动将你指定的ssh_keypair_name对应的公钥写入临时实例对应用户的~/.ssh/authorized_keys文件,导致公钥认证无匹配项。

  • 解决方法二选一:
    • 制作源快照前在原有EC2实例中预装cloud-init服务,确保AWS可以正常注入公钥
    • 制作源快照前,将你当前使用的密钥对的公钥提前写入实例对应用户的~/.ssh/authorized_keys文件中,权限设为600

核心原因5:密钥对不匹配

确认你在配置中填写的ssh_keypair_name是AWS当前区域中存在的密钥对,且该密钥对的公钥和你本地的mykey.pem私钥是配对的,密钥混淆也会直接导致认证失败。


内容的提问来源于stack exchange,提问作者Carl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:24:01