Ansible哈希密码不起作用

Ansible hash password not working

我的剧本全局变量中有一个带有 ansible_ssh_useransible_ssh_pass 的变量。我尝试用各种方法散列我的密码,但我仍然无法通过 ssh 连接到我的远程虚拟机。我试过 ansible_useransible_pass 但还是不行。以下是我用过的方法,都失败了。我不确定我错过了什么,希望一些专家能提供帮助。当我使用 clear password 时,它有效,但不是散列。以下是我尝试过但仍未成功的方法:-

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>', '$salt$')
4.   cat /etc/shadow | grep <user>
     Try to get the encrypted password but still not working

我已确认我的 VM 正在使用 ENCRYPTED_METHOD SHA512。没有任何效果,如果有人能提供帮助,我将不胜感激

I tried hashing my password with various method but I still couldn't ssh to my remote VMs

有充分的理由 — 要使用带有密码身份验证的 SSH 协议连接到远程计算机,您必须提供 密码,而不是密码哈希。


在密码验证中,用户提供密码,系统处理它们。作为安全措施之一,系统存储密码哈希值而不是密码,因此在出现漏洞时,密码本身不会受到损害。

如果出于某种原因系统允许使用散列而不是密码对用户进行身份验证,那将是一个巨大的安全漏洞(等同于明文存储密码)。

如果你真的需要使用密码验证,那么Ansible Vault提供了一种保护密码的方法。否则使用 public 密钥验证。

您似乎想要访问您的 VM 并使用 Ansible 做一些事情。

  1. 使用 Ansible 的最佳实践是首先设置一个 public-私钥对。 https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2
  2. 检查使用密钥对的 SSH 是否工作正常。如果是,你可以继续。
  3. 现在假设您要访问 IP 为 10.192.34.74 的主机。将以下行添加到您的清单文件中:

    10.192.34.72 ansible_ssh_private_key_file=/path/to/private/key/file

现在应该可以了。