【问题标题】:Ansible. Unable to ping EC2 instance from Cygwin安西布尔。无法从 Cygwin ping EC2 实例
【发布时间】:2016-07-25 06:08:13
【问题描述】:

尝试从 Cygwin 对 AWS EC2 运行非常基本的 Ansible ping 操作,但没有任何成功。

进行以下配置:

ansible.cfg:

[defaults]
hostfile = hosts
host_key_checking = False

主持人:

[local]
localhost

[servers]
server-1 ansible_ssh_host=ec2-54-175-139-180.compute-1.amazonaws.com ansible_ssh_user=ec2-user ansible_ssh_private_key_file=ansible.pem

所有这些文件 + PEM 文件都位于同一个文件夹中。 我可以使用 PEM 文件通过 SSH 连接到 EC2。我也可以远程登录。 Ping 运行良好。但以下命令不断失败:

ansible server-1 -m ping -vvv

带有以下错误消息:

   <ec2-54-175-139-180.compute-1.amazonaws.com> ESTABLISH SSH CONNECTION FOR USER: ec2-user
<ec2-54-175-139-180.compute-1.amazonaws.com> SSH: EXEC ssh -C -q -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o 'IdentityFile="ansible.pem"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=ec2-user -o ConnectTimeout=10 -o 'ControlPath=/home/UserHome/.ansible/cp/ansible-ssh-%h-%p-%r' ec2-54-175-139-180.compute-1.amazonaws.com '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1469264080.61-242019267058306 `" && echo ansible-tmp-1469264080.61-242019267058306="` echo $HOME/.ansible/tmp/ansible-tmp-1469264080.61-242019267058306 `" ) && sleep 0'"'"''
server-1 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}

那里有什么问题?我已经看到有关同一问题的多个问题,但不幸的是没有解决方案......我正在使用 2.1 版本的 Ansible。 任何帮助将不胜感激!

【问题讨论】:

  • 你从哪里运行 Ansible 脚本?
  • 什么意思?从 Cygwin 运行它:)
  • 那么你能从 Cygwin 终端通过 SSH 连接到实例吗?
  • 是的。此命令完美运行:ssh -i pemfile.pem ec2-user@ec2-54-175-139-180.compute-1.amazonaws.com
  • 在 ansible 中您使用的是“ansible.pem”,而在您的 SSH 中您使用的是“pemfile.pem”是错误的还是正确的?

标签: amazon-web-services ssh amazon-ec2 ansible


【解决方案1】:

默认情况下,Ansible 1.3 及更高版本将尽可能使用本机 OpenSSH 进行远程通信。这将启用 ControlPersist(一种性能功能)、Kerberos 和 ~/.ssh/config 中的选项,例如 Jump Host 设置。但是,当使用 Enterprise Linux 6 操作系统作为控制机(Red Hat Enterprise Linux 和衍生产品如 CentOS)时,OpenSSH 的版本可能太旧,无法支持 ControlPersist。在这些操作系统上,Ansible 将回退到使用名为“paramiko”的 OpenSSH 的高质量 Python 实现。如果您希望使用 Kerberized SSH 等功能,请考虑使用 Fedora、OS X 或 Ubuntu 作为您的控制机器,直到有更新版本的 OpenSSH 可用于您的平台——或者在 Ansible 中使用“加速模式”。

在此处查看加速模式的文档http://docs.ansible.com/ansible/playbooks_acceleration.html

【讨论】:

  • 文档说:“为了使用加速模式,只需在你的游戏中添加加速:true:”但我什至没有使用剧本。
  • Ansible 使用哪个版本的 OpenSSH?
  • 你的 Ansible 是什么版本
【解决方案2】:

好的,我找到了解决方案。

将此添加到我的 ansible.cfg 解决了问题:

[ssh_connection]

ssh_args = -o ControlMaster=no

【讨论】:

    猜你喜欢
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 2016-08-26
    • 2017-06-23
    • 2020-07-09
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多