2017-02-18 11 views
1

Мне нужно автоматизировать развертывание некоторых удаленных серверов Debian. Эти серверы имеют только учетную запись root. Я хочу сделать так, что единственный раз, когда мне когда-либо понадобится войти в систему под именем root, во время процесса настройки. Последующие логины будут выполняться с использованием обычной учетной записи пользователя, которая будет создана во время процесса настройки.Как отключить учетную запись root при настройке сервера?

Однако во время процесса настройки мне нужно установить PermitRootLogin no и PasswordAuthentication no в /etc/ssh/sshd_config. Тогда я буду делать service sshd restart. Это остановит соединение ssh, потому что ansible зашел на сервер, используя учетную запись root.

Мой вопрос: Как я могу сделать ss-ssh в корневой учетной записи, создать обычную учетную запись пользователя, установить PermitRootLogin no и PasswordAuthentication no, а затем ssh на сервер, используя обычную учетную запись пользователя и выполнить оставшиеся задания?

Весьма возможно, что мой процесс настройки ошибочен. Буду признателен за предложения.

ответ

0

Возможно, вы просто хотите сделать стандартную учетную запись пользователя и добавить ее в sudoers. Затем вы могли бы запускать исполняемый файл со стандартным пользователем, и если вам нужна команда для запуска как root, вы просто префикс с командой sudo.

я написал статью о настройке пользователя Deploy http://www.altmake.com/2013/03/06/secure-lamp-setup-on-amazon-linux-ami/

1

Вы можете фактически управлять всем процессом установки с анзибль, не требуя ручной настройки необходимых компонентов.

С уважением, вы можете изменить ansible_user и ansible_password на лету, используя set_fact. Остающиеся задачи, выполняемые после set_fact будут выполняться с использованием новых учетных данных:

- name: "Switch remote user on the fly" 
    hosts: my_new_hosts 
    vars: 
    reg_ansible_user: "regular_user" 
    reg_ansible_password: "secret_pw" 
    gather_facts: false 
    become: false 
    tasks: 

    - name: "(before) check login user" 
    command: whoami 
    register: result_before 

    - debug: msg="(before) whoami={{ result_before.stdout }}" 

    - name: "change ansible_user and ansible_password" 
    set_fact: 
     ansible_user: "{{ reg_ansible_user }}" 
     ansible_password: "{{ reg_ansible_password }}" 

    - name: "(after) check login user" 
    command: whoami 
    register: result_after 

    - debug: msg="(after) whoami={{ result_after.stdout }}" 

Кроме того, вы не должны полностью перезапустить sshd, чтобы вызвать изменения конфигурации вступили в силу, и существующие соединения SSH будут оставаться открытыми. Per sshd(8) man-страница: sshd rereads its configuration file when it receives a hangup signal, SIGHUP....

Итак, ваша установка Playbook может быть что-то вроде:

  1. логина изначально с корневой учетной записью
  2. создания обычного пользователя и установить свой пароль или настроить authorized_keys
  3. конфигурационных sudoers, чтобы позволить регулярному пользователю выполните команды от root
  4. используйте set_fact, чтобы переключиться на эту учетную запись для остальной части учебника (не забудьте использовать become: true над задачами после этого, так как вы переключились с root на reg пользователя. вы можете даже попробовать выполнение команды тест SUDO перед блокированием корня из)
  5. конфигурации Sshd изменений
  6. выполнить kill -HUP<sshd_pid>
  7. проверить, установив ansible_user обратно в корень, потерпеть неудачу, если Войти работает

 Смежные вопросы

  • Нет связанных вопросов^_^