Есть несколько шагов, чтобы подготовить эту функциональность. Сначала получите значение параметра. Может быть больше вариантов, например. по умолчанию
оболочка> sudo sshd -T | grep авторизованный файл ключей
файл авторизованных ключей .ssh/authorized_keys .ssh/authorized_keys2
Например, получить первый
- оболочка: sshd -T | grep авторизованный файл ключей
регистрация: результат
стать истинным
- set_fact:
AuthorizedKeysFile: "{{ (result.stdout|split)[1] }}"
дает
AuthorizedKeysFile: .ssh/authorized_keys
Параметр AuthorizedKeysFile может содержать %u
и %час
. Видеть Расположение файла авторизованных ключей
%h будет заменен домашним каталогом аутентифицируемого пользователя, а %u — именем входа пользователя.
Подготовьте базу данных домашних каталогов
- получить:
база данных: пароль
По умолчанию модуль получить хранит базу данных пароль в словаре getent_passwd. Дом - это 4-й атрибут, например.
- отладка:
переменная: getent_passwd['root'][4]
дает
getent_passwd['root'][4]: /root
Теперь, учитывая данные
авторизационные_ключи:
корень: [ключ1, ключ2, ключ3]
вы можете проверить работоспособность
- оболочка: sshd -T | grep авторизованный файл ключей
регистрация: результат
стать истинным
- set_fact:
AuthorizedKeysFile: "{{ (result.stdout|split)[1] }}"
- получить:
база данных: пароль
- отладка:
сообщение: |
путь: {{_path}}
ключи: {{ item.value }}
цикл: "{{auth_keys|dict2items}}"
вары:
_user: "{{ item.key }}"
_home: "{{ getent_passwd[item.key][4] }}"
_akf: "{{ AuthorizedKeysFile|regex_replace('%u', _user)|
regex_replace('%h', _home) }}"
_path: "{{ (_akf.0 == '/')|тройной (_akf, [_home, _akf]|join ('/')) }}"
дает
сообщение: |-
путь: /root/.ssh/authorized_keys
ключи: ['ключ1', 'ключ2', 'ключ3']
Если изменить параметр
оболочка> sudo sshd -T | grep авторизованный файл ключей
файл авторизованных ключей /etc/ssh/authorized_keys/%u
игра получит правильное расположение файла авторизованных ключей
сообщение: |-
путь: /etc/ssh/authorized_keys/root
ключи: ['ключ1', 'ключ2', 'ключ3']