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

使用Ansible连接EC2实例失败:Permission denied问题求助

解决Ansible SSH权限拒绝问题(WSL控制节点 → Amazon Linux 2023目标节点)

1. 修复私钥文件权限

SSH对私钥权限要求极为严格,必须设置为仅所有者可读可写,否则会直接拒绝认证。执行以下命令修正:

# 设置私钥权限为600
chmod 600 ~/.ssh/path/to/private/key
# 设置.ssh目录权限为700
chmod 700 ~/.ssh

2. 确认ansible.cfg的生效优先级

Ansible读取配置文件有固定顺序,优先级从高到低:

  • 命令行--config参数指定的文件
  • 当前工作目录下的./ansible.cfg
  • 用户家目录的~/.ansible.cfg
  • 系统级的/etc/ansible/ansible.cfg

你可以执行以下命令查看当前生效的配置路径,确认修改的是正确的文件:

ansible --version

输出中会显示ansible config file的具体路径。

3. 优化Inventory配置写法

把用户名和主机地址拆分,在Inventory中统一配置变量,避免重复且更易维护:

[aws_ec2]
ec2-xx-xx-xx-xx.compute-1.amazonaws.com
ec2-xx-xx-xx-xx.compute-1.amazonaws.com
ec2-xx-xx-xx-xx.compute-1.amazonaws.com

[aws_ec2:vars]
ansible_user=ec2-user
ansible_ssh_private_key_file=~/.ssh/path/to/private/key

4. 命令行临时指定私钥测试

如果配置文件仍不生效,直接在命令行指定私钥,快速排除配置优先级问题:

ansible all -i inventory -m ping --private-key=~/.ssh/path/to/private/key

如果这个命令能成功,说明你之前修改的配置文件没被正确加载。

5. 验证WSL内的SSH连接

确认你是在WSL终端内执行的SSH测试,而非Windows的CMD/PowerShell(WSL和Windows文件系统隔离,路径不通用)。在WSL中执行:

ssh -i ~/.ssh/path/to/private/key ec2-user@ec2-xx-xx-xx-xx.compute-1.amazonaws.com

如果连接失败,说明WSL内的密钥路径错误或未正确复制密钥到WSL的~/.ssh目录。

6. 检查目标节点SSH配置

登录目标节点,确认/etc/ssh/sshd_config的关键配置:

  • 确保PubkeyAuthentication yes(公钥认证已开启)
  • 确保AuthorizedKeysFile指向正确的公钥文件路径(默认是.ssh/authorized_keys)
  • 检查ec2-user的~/.ssh/authorized_keys文件包含控制节点的公钥,且文件权限为600,目录权限为700。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:23:32