可用的root /密码登录

时间:2019-07-29 19:56:17

标签: ansible

我正在尝试使用Ansible来配置服务器,而我要做的第一件事是测试ssh访问。如果我直接使用ssh,我可以正常登录...

ssh root@server
root@backups's password:

如果我使用Ansible,我将无法...

user@ansible:~$ ansible backups -m ping --user root --ask-pass
SSH password: 
backups | UNREACHABLE! => {
    "changed": false, 
    "msg": "Invalid/incorrect password: Permission denied, please try again.", 
    "unreachable": true
}

我使用的密码正确-100%。

在任何人建议使用SSH密钥之前-这就是我要自动化的部分。

2 个答案:

答案 0 :(得分:0)

此问题是由入门文档设置陷阱引起的。

它指示您使用服务器创建清单文件,使用ansible all -m ping ping这些服务器,并使用-u开关更改远程用户。

这并不是告诉您,如果像我一样,并非所有服务器都具有相同的用户,则建议在清单文件中指定每台服务器的用户的方式...

server1    ansible_connection=ssh    ansible_user=user1
server2    ansible_connection=ssh    ansible_user=user2
server3    ansible_connection=ssh    ansible_user=user3

我正在配置服务器,当时我唯一可用的用户是root。但是尝试进行ansible server3 -user root --ask-pass认证失败。浪费了几个小时后,我发现-user开关仅在清单文件没有用户时才有效。这是预期的优先行为。 GitHub问题对此有一些困扰,但是如果您挑战它,就会得到坚定的“预期行为”口头禅。这似乎与我背道而驰。

我随后发现,您可以指定-e 'ansible_ssh_user=root'覆盖清单用户-我将看到有关创建拉取请求以改进文档的信息。

当您在这里时,我也许可以为您节省一些时间,以帮助您解决其他问题。如果您使用剧本,则此行为是相同的。您可以在其中指定一个remote_user,但这不被接受-大概也是因为优先级。同样,您可以使用-e 'ansible_ssh_user=root'

覆盖清单用户

最后,直到我意识到Linode可以为服务器配置已部署的SSH密钥之前,我一直在尝试为ad-hoc命令指定root密码。您必须加密密码,这会给您一个长字符串,并且几乎可以肯定会在其中包含$,bash将被视为替代。确保您逃脱了这些。

lineinfile模块的行为也不直观。

答案 1 :(得分:0)

像这样编写您的 hosts 文件。它会起作用。

192.168.2.4
192.168.1.4

[all:vars]
ansible_user=azureuser

然后执行以下命令:ansible-playbook --ask-pass -i hosts main.yml --check 在配置前检查。

同时创建一个 ansible.cfg 文件。然后粘贴以下内容:

[defaults]
inventory         = hosts
host_key_checking = False

注意:所有 3 个文件,即 main.ymlansible.cfghosts 必须在同一个文件夹中。

此外,该代码还针对使用私有 IP 连接到私有网络的设备进行了测试。我没有检查使用公共 IP。如果使用 Azure/AWS,请创建一个测试 VM 并将其连接到其他设备的 VPN。

相关问题