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

How to register ssh key in vagrant using ansible for newly created user?

目前我正在使用 vagrant box 和 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

Agent admitted failure to sign using the key.

root@192.168.33.10's password:

正在询问密码。我尝试了所有无密码登录(基于 ssh 密钥的身份验证)。

正如您所描述的,剧本完成了工作。
检查 ssh 设置。不知道您使用哪个盒子,这很难说。 例如:在 ubuntu 上,sshd_config 文件中 PasswordAuthentication 的默认设置是 yes。

如果我没记错的话,你是在为 root 用户添加密钥,但你在错误的目标目录中提到了它:

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

希望对您有所帮助。