🐹 CentOS 7: Создание учетной записи, настройка sudo, root’ирование без пароля и авторизация по ключу.

Содержание:

1. Задача.
2. Решение.

2.1. Подготовка сервера.
2.2. Создание пользователя.
2.3. Настройка sudo.
2.4. Авторизация по ключу.
2.5. Отключение авторизации по паролю.

3. Оригиналы источников информации.


1. Задача.

Бывает, что требуется организовать беспарольный доступ к уделённому серверу по ключу, а парольную авторизацию отключить. Просишь это сделать коллегу, который отвечает за удаленный сервер, а он не умеет. На помощь коллеге придёт эта инструкция.

Требуется: Завести удалённую учетную запись, настроить sudo, сделать переключение в учетную запись root без ввода пароля, отключить авторизацию по паролю, организовать подключение к удалённому серверу по SSH-ключам.

2. Решение.

2.1. Подготовка сервера.

Устанавливаем файловый менеджер Midnight Commander, он очень похож на Norton Commander:

# yum -y install mc

Отключение SELinux.

Состояние работы SELinux:

# sestatus

Ответ:

SELinux включен. Отключим его.

Для этого достаточно выполнить замену строки в вышеописанном конфигурационном файле следующей командой:

# sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config

После перезагрузки:

# shutdown -r now

Проверим состояние SELinux с помощью команды sestatus, как показано ниже:

# sestatus

Готово! SELinux выключен.

2.2. Создание пользователя.

Создадим учётную запись на сервере. Под ней будет заходить коллега для работы по удалённому доступу. Для удобства можно спросить какое бы он предпочел имя удалённой учетной записи. В примере будет использоваться учетная запись коллеги myrzik.

Создадим ему учетную запись:

# adduser myrzik

Пароль ему делать на сервере не будем, он будет подключаться по ключу к серверу.

2.3. Настройка sudo.

Сделаем копию системного файла.

# cp /etc/sudoers /etc/sudoers.original

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

# mcedit /etc/sudoers

Ищем раздел «Same thing without a password» и добавляем в него в него строку:

myrzik ALL=(ALL) NOPASSWD: ALL

Проверим:

# su myrzik

Ответ: Зашел в учетную запись пользователя mytzik ввода без пароля.

# sudo su

Ответ: Зашел в учетную запись root ввода без пароля.

Выходим из цепочки учетных записей.

# exit

И еще раз:

# exit

Настройка sudo и root‘ирование без пароля настроено.

2.4. Авторизация по ключу.

Теперь организуем вход для коллеги с его ключом.

Коллега, который планирует заходить удалённо на наш сервер, должен сгенерировать 2 ключа: приватный и публичный.

Приватный ключ никому отправлять нельзя, а публичный можно распространять для удалённого входа в нужные системы.

Как сгенерировать ключи описано вот здесь: «CentOS 7: Настройка и использование SSH. Создание пары RSA-ключей.»

И так! Есть ключ коллеги id_rsa.pub, который мы получили от него по электронной почте.

Надо его переписать в специальный файл-хранилище ключей локального пользователя на удалённом сервере.

Создадим каталог для посторонних публичных ключей. Пускай будет каталог ~/pub.

# mkdir ~/pub

Кладу в него ключ id_rsa.pub.

Смотрю что содержится в файле ключа.

# cat ~/pub/id_rsa.pub

Ответ:

Да, это файл публичного ключа id_rsa.pub и он содержит запись «ssh-rsa» и её нужно добавить в файл /home/myrzik/.ssh/authorized_keys пользователя myrzik.

# mkdir /home/myrzik/.ssh
# cat ~/pub/id_rsa.pub >> /home/myrzik/.ssh/authorized_keys

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

# cat /home/myrzik/.ssh/authorized_keys

Ответ:

Файл публичного ключа id_rsa.pub можно удалить, так как он уже не нужен.

# rm -r -f ~/pub/id_rsa.pub

Настроим права на каталоги и файлы:

# chmod 755 /home/myrzik
# chmod 700 /home/myrzik/.ssh
# chmod 600 /home/myrzik/.ssh/authorized_keys
# chown -R myrzik:myrzik /home/myrzik/.ssh/

2.5. Отключение авторизации по паролю.

Сделаем копию системного файла.

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original

Отредактируем системный файл:

# mcedit /etc/ssh/sshd_config

Запретим аутентификацию по паролю.

Модифицируем файл конфигурации изменением советующего поля на указанное значение:

PermitRootLogin no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no

Перезагрузим службу.

# systemctl restart sshd.service

Протестируем попытку удалённого доступа на сервер с другого компьютера с авторизацией по ключу пользователя myrzik.

# su myrzik
# ssh myrzik@XXX.XXX.XXX.XXX

Вход по ключу пользователя myrzik на удалённый сервер работает исправно!

Вход по логину и паролю игнорируется сервером.

3. Оригиналы источников информации.

Нет.