Ansible sudo run («от имени пользователя») на Cygwin - PullRequest
0 голосов
/ 17 декабря 2018

Необходимо запустить bash-script на sudo-user на удаленных хостах, используя Ansible.Моя рабочая машина - Win10 + Cygwin (извините, это не моя вина).

Итак, я протестировал его на сценариях не-sudo (ему не нужен root-доступ) - и он работает.Нет, в первый раз это не сработало вообще: Failed to connect to the host via ssh: my_user@server1: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)

Итак, я использовал это: "ssh-keygen -t rsa" -> "ssh-copy-id my_user@server1" || "ssh-copy-id my_user@server2" под my_user: создал ключ ssh и передал его на удаленные хосты.После этого я мог запускать скрипты под my_user на server1, server2 и так далее ...

Теперь мне нужно запустить sudo-scripts.Но я не могу понять, как это будет.

  1. на Cygwin нет пользователя ROOT.И я не знаю, как можно сгенерировать ssh-ключ для несуществующего пользователя.
  2. как запустить ansible playbook с рутом?remote_user: root идет с ошибкой: Failed to connect to the host via ssh: my_user@server1: Permission denied Смотри, это my_user, а не root.Работает ли он как my_user или как root-пользователь?
  3. Может быть, я вообще ошибаюсь, и есть ли какой-либо "лучший метод" для запуска sudo-скриптов?

ОПожалуйста, помогите решить мою проблему.

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Я сделал это, но что я сделал?Итак, шаги решения:

  1. установить become: true в playbook, пройдите здесь:

    хосты: test_hosts становятся: true переменными:

  2. Затем запустите playbook с атрибутом "-K": ansible-playbook ./your_playbook.yml -K

Итак, все работает: запускайте и даже выполняйте скрипты под sudo.Но я не могу понять, как я могу установить, какого пользователя я использую как «исполняемый пользователь».

0 голосов
/ 17 декабря 2018

Похоже, что аутентификация как root отключена на удаленном сервере.В /etc/ssh/sshd_config найдите PermitRootLogin и установите для него значение Да, но я не рекомендую вам это делать.

На самом деле, использовать именно пользователя root - плохая практика.

Проверка разрешенийдля вашего my_user.Возможно, вы можете предоставить ему права sudo без пароля.

Чтобы сделать это, отредактируйте /etc/sudoers как root, найдите эту строку:

# Allow members of group sudo to execute any command

И после этого добавьте:

my_user ALL=(ALL) NOPASSWD: ALL

После этого вы сможете выполнить любую команду sudo без пароля на удаленном компьютере.

...