gpt4 book ai didi

amazon-web-services - 如何生成 key 对,然后通过 ansible ssh 进入 aws 实例以在该实例上运行命令

转载 作者:行者123 更新时间:2023-12-02 23:49:51 25 4
gpt4 key购买 nike

我正在创建 Ansible Playbook,并且已经创建了一个新的 AWS EC2 实例。我现在想要通过 SSH 连接到该实例并在该实例的 shell 中运行一些命令。我该怎么做呢?有没有办法通过 ansible 生成 key 对,或者最好使用现有的 key 对?

我在线查看了 Ansible ec2 的在线资源 - 在 ec2 中创建、终止、启动或停止实例 (http://docs.ansible.com/ansible/latest/ec2_module.html),以及在线博客。尽管如此,我还无法弄清楚如何通过 SSH 进入实例,也没有在网上看到示例。

使用:

  - name: Wait for SSH to come up
wait_for:
host: "{{ item.public_ip }}"
port: 22
delay: 60
timeout: 320
state: started
with_items: "{{ ec2.instances }}"

来自 ansible-playbook 文档生成以下错误:

"msg": "Timeout when waiting for :22"

该实例也是在没有公共(public) DNS 的情况下创建的,用于通过 CLI 通过 SSH 连接到该实例。

任何有关如何通过 ansible-playbook ssh 进入实例或为实例生成公共(public) DNS 名称的帮助,我们将不胜感激。

最佳答案

您似乎对 AWS 实例的工作原理存在根本性的误解。创建实例时,它会为默认用户分配一个 key 对。 (例如,对于 Amazon Linux 实例,用户将为 ec2-user,ubuntu 镜像使用 ubuntu 用户)。

可以在实例的 ec2 控制台的详细信息中看到该 key 对。所有现有的 key 对都可以在 ec2 控制台的“ key 对”部分中看到。

为了能够通过 ssh 连接到使用刚刚创建的 key 启动的实例,您需要执行以下操作:

  1. 在本地生成 key 对(使用 shell: ssh-keygen ...)
  2. 从本地生成的 key 对创建 ec2 key 对(使用 ec2_key: ... )
  3. 使用指定的 ec2 key 对启动实例(使用 ec2: ...)
  4. 使用第 1 步中生成的 key 调用同一 playbook 中刚刚启动的实例。

步骤 1-3 应作为主机:127.0.0.1 运行。

第 4 步需要在同一 playbook 中作为单独的 hosts: 调用来完成,并且并不像看起来那么容易。您需要通过某种方式使用 add_hosts 模块在 hosts 文件、Ansible group_vars 路径中指定新创建的实例,以及/或以某种方式找到它的IP地址(可能通过使用实例标签)。

找到实例后,Ansible private_key_file 变量可用于指定步骤 1 中的 key 并通过 ssh 进入实例。

并不是说它不能完成,但由于每次进入实例时都需要一个新的 key 对而这样做很困难且不切实际,我建议不要这样做,除非绝对必要。如果出于安全考虑,最好制定适当的 key 轮换策略。

关于amazon-web-services - 如何生成 key 对,然后通过 ansible ssh 进入 aws 实例以在该实例上运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45724725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com