Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssh Ansible:权限被拒绝(公钥、密码)_Ssh_Ansible - Fatal编程技术网

Ssh Ansible:权限被拒绝(公钥、密码)

Ssh Ansible:权限被拒绝(公钥、密码),ssh,ansible,Ssh,Ansible,我无法连接到Ansible中的主机。这就是错误: 192.168.1.12 |遥不可及!=>{ “更改”:错误, “msg”:“错误!SSH在连接过程中遇到未知错误。建议您使用-vvv重新运行该命令,该命令 将启用SSH调试输出以帮助诊断问题“, “无法到达”:true} 这是我的主机文件: [test] 192.168.1.12 这是特别指示: ansible all -m ping 默认情况下,我可以通过原始ssh进行连接,并且可以尝试使用ssh密钥。看来你的钥匙弄错了。尝试使用密码验证

我无法连接到Ansible中的主机。这就是错误:

192.168.1.12 |遥不可及!=>{ “更改”:错误, “msg”:“错误!SSH在连接过程中遇到未知错误。建议您使用-vvv重新运行该命令,该命令 将启用SSH调试输出以帮助诊断问题“, “无法到达”:true}

这是我的
主机
文件:

[test]
192.168.1.12
这是特别指示:

ansible all -m ping

默认情况下,我可以通过原始
ssh

进行连接,并且可以尝试使用ssh密钥。看来你的钥匙弄错了。尝试使用密码验证

ansible all-m ping——询问通行证——询问sudo通行证


我希望它能有所帮助。

@bigdestropher,要设置ssh公钥,请使用此手册

- hosts: all
  remote_user: root
  vars:
    authorized_key_list:
      - name: root
        authorized_keys:
         - key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
           state: present
  roles:
    - { role: GROG.authorized-key }
使用
--ask pass
执行此剧本,因为您将使用它设置公钥身份验证

ansible playbook设置\u ssh.yml——询问通行证

此角色将当前用户公钥添加到远程主机
授权密钥
文件

注意

ask pass
每次运行仅工作一次,因此这仅适用于具有相同密码的主机

我通常使用
-limit
并在具有相同密码的主机上批量执行

例如,假设host1、host2和host3有密码
foo
host4和host5
bar

ansible playbook setup-ssh.yml——询问密码-l主机1、主机2、主机3

提供密码
foo

ansible playbook setup-ssh.yml——询问通行证-l主机4、主机5

提供密码

然后

ansible-m ping主机1、主机2、主机3、主机4、主机5


您可以阅读角色文档

我遇到了这个问题-我的ssh密钥设置不正确。我使用以下方法修复了此问题:

  • 使用ssh-keygen命令确保每台机器都设置了ssh密钥

    ssh-keygen

  • 使用ssh copy id命令将公钥传递给计算机

    ssh拷贝id-i


这有助于解决我的错误,希望有帮助

对于那些来这里运行Ansible 2.6的人来说,
--ask sudo pass
现在不推荐使用。正确的语法是:

ansible all -m ping --ask-pass --ask-become-pass

我通过添加
--ask pass
参数解决了这个问题

是否需要更多信息、可用版本和环境,您使用什么作为虚拟机监控程序?虚拟箱?vagrant?目前听起来像是网络问题,发送ansible all-m ping-vvv的结果?您的问题标题是“权限被拒绝(公钥、密码)”,但您引用的实际错误表明完全不同。您有什么实际问题?@Kenster当我使用-vvvv选项执行命令时,会出现此错误。它起作用了。你知道如何正确设置ssh密钥吗?我也有同样的问题。有了这个提示,我无法解决它ansible-i hosts.txt all-m ping--ask pass--ask sudo pass[弃用警告]:sudo命令行选项已被弃用,取而代之的是“been”命令行参数。此功能将在版本2.9中删除。。。SSH密码:SUDO密码[默认为SSH密码]:11.0.0.108 |不可访问!=>{“changed”:false,“msg”:“无效/不正确的密码:权限被拒绝,请重试。”,“unreachable”:true}当我执行您上面所说的操作时,我遇到以下错误:错误!在/home/osboxes/roles:/home/osboxes:/etc/ansible/roles中未找到角色“GROG.authorized key”。错误似乎出现在“/home/osboxes/setup_ssh.yml”:第10行第7列,但可能在文件的其他位置,具体取决于语法问题。有问题的行似乎是:roles:-{role:GROG.authorized-key}^here@Techiee,您是否安装了该角色?如果不只是键入:
ansible galaxy install GROG.authorized key
[警告]:-GROG.authorized-key未成功安装:未能从API服务器获取数据未能验证galaxy.ansible.com的SSL证书:443。确保您的托管系统安装了有效的CA证书。如果为url提供服务的网站使用SNI,您需要在托管计算机上安装python>=2.7.9,或者您可以安装
urllib3
pyopenssl
ndg HttpSCClient
pyasn1
python模块,以在python>=2.6中执行SNI验证。如果不需要确认服务器标识,但这是不安全的,并且看起来运行ansible的机器不符合python要求,则可以使用validate_certs=False。您正在执行哪个版本的python
python-V
我正在使用python2.7.6