Ubuntu WSL Ansible - user@localhost 权限被拒绝(公钥,密码)



我正在使用ubuntu WSL作为ansible的控制器。 尝试在本地主机中安装 python 依赖项,然后启动 ec2 实例 但由于以下错误而失败: "msg":"无法通过 ssh 连接到主机: kevin@localhost:权限被拒绝(公钥、密码(。

我做了什么来修复:1.做了 ssh-keygen 2.生成公钥/私钥 rsa 密钥对。 3.输入保存密钥的文件(/home/user/.ssh/id_rsa(: 4.最后 $ cat ~/id_rsa.pub>> ~/.ssh/authorized_keys

工作之道:

1.ssh 本地主机正在为 kevin@localhost 工作

2.首先我使用带有 pem 文件的现有 RHEL ec2 实例,有了这个我可以运行我的任务并启动实例

不起作用的事情:

--2 错误类型--

具有相同问题的剧本任务

  1. 失败: [本地主机] (项目=网络服务器 A( =>

    {"ansible_loop_var": "item", "item": "webserverA", "msg": "无法通过 ssh 连接到主机: kevin@localhost: 权限被拒绝(公钥,密码(。", "无法访问": true} 致命:[本地主机]:无法访问!=> {"changed": false, "msg": "all items complete", "results": [{"ansible_loop_var": "item", "item": "webserverA", "msg": "无法通过 ssh 连接到主机: kevin@localhost: 权限被拒绝(公钥,密码(.", "无法访问": true}]}

  2. <127.0.0.1> 为用户建立本地连接:

    凯文 <127.0.0.1> EXEC/bin/sh -c 'echo ~kevin && sleep 0' <127.0.0.1> 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" ( && 睡眠 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,标准输出输出:ansible-tmp-1590382762.0043557-97164890408687=/home/kevin/.ansible/tmp/ansible-tmp-1590382762.0043557-97164890408687",

澄清:1.In ansible.cfg 文件应该为private_key_file .pem 文件或id_rsa提供哪个密钥 我的理解是 ssh 本地主机我们需要id_rsa和 ssh ec2 实例我们需要 .pem 文件 所以请支持修复问题 1

2.对于问题 2,我试图在 ansible 中给出remote_tmp路径.cfg并且连接=本地但不起作用

库存文件:

主机开发

[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).rn')
<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'"'"''

你从亚马逊得到的.pem是一个私钥,就像id_rsa一样。

通过执行 ssh -i ~/.ssh/id_rsa kevin@localhost 来验证您的 Ansible 应该做什么。

如果这有效,您基本上拥有所需的所有部分,并且应该查看您的 ansible 配置来确定。

如果无法执行以下验证:

  • 您是否有权访问密钥?它应该是 chmod 400,所有者是您运行 Ansible 的用户。
  • 这是该服务器上的正确用户吗?
  • 在末尾添加 -v 将提供更详细的调试,您可以继续附加另一个 v(即 -vv 或 -vvv(以获得更详细的调试,最多 4 与

你的安西.cfg应该是这样的

[defaults]
private_key_file = /home/kevin/.ssh/id_rsa

最新更新