使用剧本中的authorized_key module为新用户设置SSH密钥

2024-09-29 00:16:55 发布

您现在位置:Python中文网/ 问答频道 /正文

场景:

根据hosts文件的[clients]部分,执行以下操作:

  1. 检查用户“foo”的SSH登录是否失败,如果是
  2. 使用授权的密钥模块为用户“foo”添加SSH密钥
  3. 假设远程计算机上已经存在用户“foo”,并且本地(ansible)主机上已经创建了SSH公钥

我知道this solution正在使用Ansible命令行,但我希望能够将其放入剧本中。让脚本与用户输入密码(包括sudo)交互是可以接受的。在

现在我知道了如何使用第三方角色GROG.authorized-key来做我想做的事情,但它仍然要求我使用-K开关运行playbook。在Ansible中(在命令行开关旁边)是否有什么东西只在需要时提示输入密码?在

- hosts: clients
  vars:
    authorized_key_list:
      - name: pdo
        authorized_keys:
         - key: "{{ lookup('file', '/home/pdo/.ssh/id_rsa.pub') }}"
           state: present
  roles:
    - { role: GROG.authorized-key }

Tags: 文件key命令行用户密码foo场景密钥
2条回答

我认为根据你的意见,这应该是有效的:

- hosts: clients
  become: true
  tasks: 
  - name: Add authorized_key to pdo user on the remote client machine(s)
    authorized_key: user=foo key="{{ lookup('file', '/home/pdo/.ssh/id_rsa.pub') }}"

用-K来调用它以获得成为密码的问题。这将在远程计算机上发出sudo命令。这就是你需要的,不是吗?在

特别感谢帮助我理解我做错了什么的GROG。在

基本上,我是在以非根用户身份运行Ansible playbook时尝试做root作业。最后,我创建了以下bootstrap.yml,并使用以下命令运行它:

ansible-playbook ./bootstrap.yml -u root -k

这将以root用户身份运行playbook,并使用root密码提示符,创建用户并建立sudo和无密码访问

 -
# file: bootstrap.yml
# Execute once as root user to create a public key and install it to your client machine(s) using the following command
# ansible-playbook ./auth-client.yml -u root -k

# This requires you to install GROG.management-user role from the Ansible Galaxy using this command:
# ansible-galaxy install GROG.management-user

# Add pdo user on remote machines
- hosts: all
  tasks:
  - name: Add remote users
    user: name=pdo group=users

# Generate SSK keys at the localhost for pde user
- hosts: localhost
  tasks:
  - name: Provision local pdo user
    user: name=pdo generate_ssh_key=yes ssh_key_bits=2048 ssh_key_file=.ssh/id_rsa

# Install public key into remote machine    
- hosts: all
  vars:
    authorized_key_list:
      - name: pdo
        authorized_keys:
         - key: "{{ lookup('file', '/home/pdo/.ssh/id_rsa.pub') }}"
           state: present
  roles:
    - { role: GROG.authorized-key }

# Add sudo privileges for pdo user
- hosts: all
  roles:
  - { role: GROG.sudo, become: yes }

相关问题 更多 >