如何使用ansible为新创建的用户在vagrant中注册ssh密钥?
目前我使用的是流浪者盒子和ansible。我的本地配置网络是config.vm.network“private_network”,ip:“192.168.33.10” 我使用playbook ansible在vagrant box中添加了一个用户:如何使用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
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文件,它正在工作。我在答案中添加了你的评论,这样它也会帮助其他人。谢谢