Linux — Создание Пользователя С Помощью Ansible С Аутентификацией Файла Pem

  • Автор темы Thedon
  • Обновлено
  • 15, Oct 2024
  • #1

Сообщество, я создаю пользователя на клиентском компьютере с помощью Ansible, но проблема в том, что он создает пользователя и добавляет файл аутентификации, но получает ошибку при подключении по SSH к этому компьютеру с использованием созданного пользователя. Ниже приведен мой исходный код.

 
   ---

password: raspberry

users:

- username: ABC

groups: ABC

pem_file_path: /home/ubuntu/XYZ.pem
 

требуемый_varlist.yml

--- # This file is used to create a single user or multiple with password - hosts: hostMachine become_method: sudo become_user: root become: true gather_facts: no vars_files: - ../../../group_vars/required_varlist.yml tasks: - name: Ensure group is exist group: name: "{{ item.groups }}" with_items: - "{{ users }}" - name: create a new user without password user: name: "{{ item.username }}" group: "{{ item.groups }}" groups: "sudo,{{ item.username }}" shell: /bin/bash createhome: yes with_items: - "{{ users }}" - name: Add Sudo privileges to user command: usermod -aG sudo "{{ item.username }}" with_items: - "{{ users }}" - name: Add user in sudoders shell: sh -c "echo \""{{ item.username }}" ALL=(ALL) NOPASSWD:ALL\" >> /etc/sudoers" with_items: - "{{ users }}" - name: create directory file: path: "/home/{{ item.username }}/.ssh" state: directory mode: 0700 owner: "{{ item.username }}" group: "{{ item.groups }}" with_items: - "{{ users }}" - name: Set Authorized key token from the file become: true authorized_key: user: "{{ item.username }}" state: present key: "{{ lookup('file', '{{ pem_file_path }}') }}" # path: '/etc/ssh/authorized_keys/"{{ item.username }}"' with_items: - "{{ users }}" - name: restart ssh service: name=sshd state=restarted

#ansible #linux #аутентификация

Thedon


Рег
27 May, 2006

Тем
54

Постов
213

Баллов
503
  • 25, Oct 2024
  • #2

Я подозреваю, что здесь происходит то, что вы пытаетесь вставить закрытый ключ в

 
 - name: Set Authorized key token from the file

become: true

authorized_key:

user: "{{ item.username }}"

state: present

key: "{{ lookup('file', '/tmp/key-{{ item.username }}.pub') }}"

with_items:

- "{{ users }}"
 
file, which is invalid as only the открытый ключ требуется на целевой машине.

Что вам нужно сделать, это извлечь открытый ключ из закрытого ключа:

- name: Generate an OpenSSL public key with a passphrase protected private key openssl_publickey: path: /tmp/key-{{ item.username }}.pub privatekey_path: {{ item.pem_file_path }} privatekey_passphrase: ansible format: OpenSSH with_items: - "{{ users }}"

а затем используйте открытый ключ:

authorized_keys
 

DurfAdend


Рег
23 Nov, 2004

Тем
91

Постов
211

Баллов
696
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно