【发布时间】:2020-09-11 17:24:49
【问题描述】:
我正在使用 ubuntu WSL 作为 ansible 的控制器。 尝试在 localhost 中安装 python 依赖项,然后启动一个 ec2 实例 但由于以下错误而失败: "msg": "通过 ssh 连接主机失败:kevin@localhost: Permission denied (publickey,password)。"
我做了什么来解决: 1.做了ssh-keygen 2.生成公钥/私钥rsa密钥对。 3.输入保存密钥的文件(/home/user/.ssh/id_rsa): 4.最后 $ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
工作成功:
1.ssh localhost 为 kevin@localhost 工作
2.首先我使用带有 pem 文件的现有 RHEL ec2 实例,这样我可以运行我的任务并启动实例
事情不正常:
--2 错误类型--
Playbook 任务有同样的问题
-
失败:[localhost] (item=webserverA) =>
{"ansible_loop_var": "item", "item": "webserverA", "msg": "无法通过 ssh 连接到主机:kevin@localhost: Permission denied (publickey,password).", "unreachable “: 真的} 致命的:[本地主机]:无法访问! => {"changed": false, "msg": "All items completed", "results": [{"ansible_loop_var": "item", "item": "webserverA", "msg": "连接失败通过 ssh 的主机:kevin@localhost: Permission denied (publickey,password).", "unreachable": true}]}
-
为用户建立本地连接:
凯文 执行 /bin/sh -c 'echo ~kevin && sleep 0' EXEC /bin/sh -c '( umask 77 && mkdir -p "
echo /home/kevin/.ansible/tmp/ansible-tmp-1590382761.4873009-58188090245831" && echo ansible-tmp-1590382761.4873009-58188090245831="echo /home/kevin/.ansible/tmp/ansible-tmp-1590382761.4873009-58188090245831" ) && sleep 0'"msg": "身份验证或权限失败。在某些情况下,您可能已经能够进行身份验证并且对目标目录没有权限。请考虑将 ansible.cfg 中的远程 tmp 路径更改为以 \ 为根的路径“/tmp\”。失败的命令是:( umask 77 && mkdir -p \"
echo /home/kevin/.ansible/tmp/ansible-tmp-1590382762.0043557-97164890408687\" && echo ansible-tmp-1590382762.0043557-97164890408687=\"echo /home/kevin/.ansible/tmp/ansible-tmp-1590382762.0043557-97164890408687\" ),以结果 1 退出,stdout 输出: ansible-tmp-1590382762.0043557-97164890408687=/home/kevin/.ansible/tmp/ansible-tmp-1590382762.0043557-97164890408687\n",
说明: 1.在 ansible.cfg 文件中,应该为 private_key_file .pem 文件或 id_rsa 提供哪个密钥 我的理解是 ssh localhost 我们需要 id_rsa 和 ssh ec2 实例我们需要 .pem 文件 因此,请支持解决问题 1
2.对于问题 2,我尝试在 ansible.cfg 和 connection=local 中提供 remote_tmp 路径但不起作用
库存文件:
主机开发
[webservers]
localhost ansible_user=kevin
**Play.yml**
- name: Creates the ec2 instances
hosts: localhost
gather_facts: no
roles:
- python
tasks:
- name: Launch an EC2 Instance
ec2_instance:
//Using the access keys here
详细输出:
<localhost> ESTABLISH SSH CONNECTION FOR USER: kevin
<localhost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=30m -o 'IdentityFile="/home/kevin/.ssh/id_rsa"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="kevin"' -o ConnectTimeout=10 -o ControlPath=/home/kevin/.ansible/cp/9faa73ac6e localhost '/bin/sh
-c '"'"'echo ~kevin && sleep 0'"'"''
<localhost> (255, b'', b'kevin@localhost: Permission denied (publickey,password).\r\n')
<localhost> ESTABLISH SSH CONNECTION FOR USER: kevin
<localhost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=30m -o 'IdentityFile="/home/kevin/.ssh/id_rsa"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="kevin"' -o ConnectTimeout=10 -o ControlPath=/home/kevin/.ansible/cp/9faa73ac6e localhost '/bin/sh
-c '"'"'echo ~kevin && sleep 0'"'"''
【问题讨论】:
标签: amazon-web-services ubuntu ssh ansible windows-subsystem-for-linux