2017-10-08 156 views
0

我在我的手册全局变量中有一个变量ansible_ssh_useransible_ssh_pass。我尝试用各种方法散列我的密码,但我仍然无法SSH到我的远程虚拟机。我试过ansible_useransible_pass,但仍然没有运气。以下是我使用的方法,全部失败。我不确定我错过了什么,希望有些专家可以提供帮助。当我使用clear password时,它可以工作,但不是哈希。下面是我试过的方法,但仍然不成功: -Ansible哈希密码不起作用

1. mkpasswd --method=SHA-512 
2. python -c "from passlib.hash import sha512_crypt; 
    print sha512_crypt.encrypt('<password>')" 
3. # python 
    >>> import crypt 
    >>> crypt.crypt('<PASSWORD>', '$6$salt$') 
4. cat /etc/shadow | grep <user> 
    Try to get the encrypted password but still not working 

我确认我的VM使用ENCRYPTED_METHOD SHA512。没有什么工作,不胜感激,如果有人可以帮助

+0

说出你实际想要做的事情可能是有益的。说出你所做的并不能解释任何事情。 – techraf

+0

我试图从机器A运行Ansible,并期望Ansible使用'ansible_ssh_user'和'ansible_ssh_pass'来执行一些任务的ssh。当'ansible_ssh_pass'清楚时,一切正常,我可以通过Ansible从机器A登录到机器B.当我散列密码时,它不起作用。希望可以帮助 – jlim

回答

3

我试着用各种方法散列我的密码,但我仍然无法ssh到我的远程虚拟机

而对于一个很好的理由 - 连接到使用带密码验证的SSH协议远程计算机,您必须提供密码,而不是密码哈希。


在密码验证用户提供密码和系统处理它们。作为安全措施之一,系统存储密码哈希而不是密码,以便在发生违规时密码本身不会受到威胁。

如果由于某种原因系统允许使用散列而不是密码来验证用户,这将是一个巨大的安全漏洞(相当于存储密码清晰)。

如果您确实需要使用密码验证,那么Ansible Vault提供了一种保护密码的方法。否则使用公钥认证。

+0

谢谢。你知道这是否记录在Ansible文档的任何地方吗?我会看看'ansible-vault'来加密变量文件或Hashicorp保管库以存储秘密 – jlim

+1

@jlim它没有记录,因为没有什么可以记录,尤其是在Ansible方面。在密码认证用户提供密码和系统处理这些密码。为了提供安全性,系统存储密码哈希值,以便在发生违规时密码不会受到影响。如果由于某种原因系统允许使用散列而不是密码来验证用户,这将是一个巨大的安全缺陷。 Ansible在这里没有关系。 Ansible Vault当然是保护秘密的好方法。 – techraf

+0

你是对的。不能同意更多。谢谢。 – jlim