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

如何通过AWS EC2 Instance Connect转发Ansible请求至私有实例

解决方案:通过EC2 Instance Connect+Ansible实现堡垒机转发到私有实例

这个需求完全可行,以下是具体实现方法:

一、修正SSH命令实现直接链式连接

你当前的命令仅建立了到堡垒机的连接,要转发到私有实例,需要在堡垒机上通过nc(netcat)做二次转发,正确的SSH命令如下:

ssh -i .secrets/secret-key.pem \
  -o ProxyCommand="aws ec2-instance-connect open-tunnel --instance-id i-04011022cbfc124f6 nc %h %p" \
  user@<私有实例的私有IP或内部DNS>

解释:aws ec2-instance-connect open-tunnel先建立到堡垒机的加密隧道,随后通过堡垒机上的nc命令,将本地SSH流量转发到私有实例的22端口。

二、配置Ansible实现自动转发

要让Ansible自动通过堡垒机执行任务,可通过以下两种方式配置:

方式1:在Inventory文件中定义变量

编辑你的Ansible Inventory(比如hosts.ini),添加私有实例的连接参数:

[private_instances]
i-09e745ed42f686fdb ansible_host=<私有实例私有IP> ansible_user=user ansible_ssh_private_key_file=.secrets/secret-key.pem

[private_instances:vars]
ansible_ssh_common_args='-o ProxyCommand="aws ec2-instance-connect open-tunnel --instance-id i-04011022cbfc124f6 nc %h %p"'

方式2:修改Ansible全局配置

编辑ansible.cfg文件,添加SSH连接代理配置:

[ssh_connection]
ssh_args = -o ProxyCommand="aws ec2-instance-connect open-tunnel --instance-id i-04011022cbfc124f6 nc %h %p"
private_key_file = .secrets/secret-key.pem

关键注意事项

  • 确保堡垒机已安装nc工具:根据系统不同,执行sudo yum install nc(RHEL/CentOS)或sudo apt install netcat-openbsd(Ubuntu/Debian)
  • 私有实例的安全组需允许堡垒机的私有IP访问22端口
  • 堡垒机的IAM角色需包含ec2-instance-connect:OpenTunnel权限,同时本地AWS CLI已配置好对应权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 03:05:08