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

使用Packer+Ansible在AWS构建AMI时遇SSH权限错误求助

解决Packer+Ansible构建AWS AMI时的SSH权限错误

问题原因

  • Packer调用Ansible连接AWS EC2实例时,Ansible会默认读取本地运行用户的~/.ssh/config文件,而SSH对该文件的权限有严格要求:
    • 文件所有者必须与当前运行用户完全匹配
    • 文件权限只能设置为600(仅所有者可读可写)
    • 父目录~/.ssh的权限必须是700(仅所有者拥有全部权限)
  • 一旦权限或所有者不满足要求,SSH会直接拒绝使用该配置文件,触发连接错误。

解决步骤

1. 修复本地.ssh目录及文件权限

执行以下命令修正权限(替换myuser为你的实际用户名):

chown myuser:myuser /home/myuser/.ssh/config
chmod 600 /home/myuser/.ssh/config
chmod 700 /home/myuser/.ssh

2. 让Packer绕过本地SSH配置(可选)

如果不想依赖本地ssh/config,可以在Packer的HCL配置中添加参数,强制跳过本地配置文件:

source "amazon-ebs" "ami-build" {
  # 你的AWS镜像、区域等基础配置...
  ssh_username = "ec2-user" # 根据镜像类型调整,比如Ubuntu用ubuntu
  ssh_pty      = true
  ssh_timeout  = "10m"
  # 禁用读取本地SSH配置
  ssh_extra_args = ["-F", "/dev/null"]
}

3. 检查Ansible配置是否强制加载本地SSH config

查看项目或全局的ansible.cfg文件,确保ssh_connection段没有强制指定有问题的配置文件:

[ssh_connection]
ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s
# 避免添加-F参数指向权限错误的config文件

验证方式

修复权限后,先手动测试SSH连接到EC2实例(使用Packer配置中相同的密钥),确认无权限警告:

ssh -i /path/to/your/key.pem ec2-user@<实例公网IP>

如果连接正常,再重新运行Packer构建命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:49:50