如何使用ansible为新创建的用户在vagrant中注册ssh密钥?

如何使用ansible为新创建的用户在vagrant中注册ssh密钥?,vagrant,ansible,ansible-playbook,vagrantfile,Vagrant,Ansible,Ansible Playbook,Vagrantfile,目前我使用的是流浪者盒子和ansible。我的本地配置网络是config.vm.network“private_network”,ip:“192.168.33.10” 我使用playbook ansible在vagrant box中添加了一个用户: hosts: all remote_user: vagrant sudo: true tasks: authorized_key: user=root key="{{ lookup('f

目前我使用的是流浪者盒子和ansible。我的本地配置网络是config.vm.network“private_network”,ip:“192.168.33.10”

我使用playbook ansible在vagrant box中添加了一个用户:

  hosts: all
  remote_user: vagrant
  sudo: true
  tasks:
    authorized_key: user=root
                    key="{{ lookup('file','/home/root/.ssh/id_rsa.pub') }}"
                    path=/etc/ssh/authorized_keys/root
                    manage_dir=no
当我执行
vagrant ssh
时,我可以在主目录中看到'root'用户,并在/etc/ssh/authorized/toot中看到授权密钥,但当我执行
root@192.168.33.10

代理承认未能使用密钥签名

root@192.168.33.10的密码:


它正在询问密码。我尝试在没有密码的情况下登录(基于ssh密钥的身份验证)。

正如您所描述的,playbook完成了任务。
检查ssh设置。如果不知道你用的是哪个盒子,那就很难说了。
例如:在ubuntu上,sshd_config文件中密码身份验证的默认设置为yes。

如果我没有错,您正在为root用户添加密钥,但在错误的dest目录中提到它:

hosts: all
  remote_user: vagrant
  sudo: true
  tasks:
    - name: Add Authorized Key for ROOT
      authorized_key: user={{ username }} 
                      key="{{ lookup('file','~/.ssh/id_rsa.pub') }}" 
                      state=present
如果找不到具有相对路径的密钥,请将key=“{lookup('file','~/.ssh/id_rsa.pub')}}”更改为类似的方式:

key="{{ lookup('file','/home/username/.ssh/id_rsa.pub') }}"
从/etc/ssh/sshd_config中取消对此的注释:

AuthorizedKeysFile      %h/.ssh/authorized_keys
如果仍然存在问题,请将此行更改为:

PasswordAuthentication no

希望这能对您有所帮助。

这里root作为用户名的参考,它可以是任何东西。我刚刚更改了vmbox的sshd_配置文件,它可以正常工作。Thanx无论如何,我只是想让你的情况变得简单,你能指定你在sshd_配置中更改了哪个选项吗?在虚拟框中,sshd_配置文件密码身份验证为否,并取消注释此lineAuthorizedKeysFile%h/.ssh/authorized_key,但是现在我更改了我的ansible文件,它正在工作。我在答案中添加了你的评论,这样它也会帮助其他人。谢谢