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

使用Ansible动态inventory ec2.py无法SSH连接EC2私有IP的问题排查

问题诊断与解决方案

核心问题拆解

  1. SSH超时原因:你的Ansible控制节点不在EC2实例所在VPC的内网范围内,直接访问私有IP(10.0.1.205)存在网络连通性障碍——即便安全组开放了22端口,跨公网无法直接访问VPC私有IP段,因此出现连接超时。
  2. ProxyCommand配置后报错原因:AWS CLI v2是独立二进制包,并非以Python模块形式安装;而你的系统存在多Python版本(2.7.5、3.4、3.6),Ansible默认调用的Python环境(大概率是系统Python 2.7)找不到awscli.clidriver模块,导致连接失败。

针对性解决方案

方案1:直接调用AWS CLI二进制路径(推荐)

绕过Python模块依赖,直接指定AWS CLI v2的绝对二进制路径配置ProxyCommand:

方式1:修改ansible.cfg全局配置

[ssh_connection]
ssh_args = -o ProxyCommand="/usr/local/aws-cli/v2/current/bin/aws ec2-instance-connect open-tunnel --instance-id %h"
private_key_file = /etc/my_key

方式2:在Playbook中指定主机变量

- hosts: all
  vars:
    ansible_ssh_common_args: '-o ProxyCommand="/usr/local/aws-cli/v2/current/bin/aws ec2-instance-connect open-tunnel --instance-id %h"'
    ansible_ssh_private_key_file: /etc/my_key

方案2:校准Ansible的Python解释器(仅适配AWS CLI v1)

若坚持使用Python模块调用方式(不推荐,因AWS CLI v1已停止维护),需确保Ansible使用的Python环境已安装AWS CLI v1:

  1. 用Python3.6安装AWS CLI v1:pip3.6 install awscli
  2. 在ansible.cfg中指定解释器:
[defaults]
interpreter_python = /usr/bin/python3.6

验证步骤

  1. 在控制节点执行以下命令,确认EC2 Instance Connect隧道可用:
/usr/local/aws-cli/v2/current/bin/aws ec2-instance-connect open-tunnel --instance-id i-0287a97b2579f44d3
  1. 检查控制节点IAM权限:确保执行Ansible的用户/角色拥有ec2-instance-connect:OpenTunnel权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 02:58:16