Создаём no root пользователя в Ubuntu Server и добавляем вход по ssh без пароля

Если вы арендовали сервер для публикации вашего сайта или приложения вне зависимости от того физический он (bare-metal server) или виртуальный (Virtual Dedicated Server, VDS) настоятельно не рекомендуется подключаться к нему и работать с ним под супер-пользователем root, который имеет неограниченные права. Правильнее будет создать нового пользователя и работать под ним. Также следует отказаться от подключения к серверу через ssh по паролю в пользу аутентификации с помощью ключа.

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

Подключитесь к серверу с помощью ssh под пользователем root и введите следующую команду:

adduser username

где username – имя нового пользователя.

Далее вам нужно будет придумать пароль, указать контактную информацию (можно пропустить) и подтвердить корректность введённых данных. После этого будет создан новый пользователь.

Добавление пользователя в группу sudo

Если вы хотите, чтобы новый пользователь имел привилегии администратора системы (возможность использовать sudo), добавьте его в группу sudo с помощью следующей команды:

usermod -aG sudo username

Переключение на созданного пользователя

Чтобы переключиться на созданного ранее пользователя используйте следующую команду:

su - username

Подключение с помощью ssh по паролю

Чтобы подключиться к серверу по ssh используя пароль, воспользуйтесь следующей командой:

ssh username@server-ip-address

Команда попросит ввести пароль пользователя username, после чего вы подключитесь к серверу под созданным ранее пользователем.

Подключение с помощью ssh по ключу

Для подключения к серверу с помощью ssh необходимо сгенерировать пару из публичного и приватного ключей (либо использовать существующую), скопировать публичный ключ на сервер, затем используя приватный ключ подключиться к серверу.

Генерация пары ключей

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

ssh-keygen

Команда попросит вас выбрать расположение ключа (по-умолчанию .ssh/id_ed25519) и добавить секретную фразу (опционально).

По-умолчанию, для генерации ключей будет использован алгоритм ED25519. Для использования другого алгоритма можно передать параметр командной строки -t. Например, сгенерировать пару ключей с использованием алгоритма RSA можно следующим образом:

ssh-keygen -t rsa -b 4096
  • -t rsa: название алгоритма;
  • -b 4096: длина ключа в битах.

Копирование публичного ключа на сервер

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

ssh-copy-id username@server_ip_or_hostname
  • username: имя созданного ранее пользователя;
  • server_ip_or_hostname: IP адрес или домен вашего сервера.

Эта команда добавит ваш публичный ключ (по-умолчанию, .ssh/id_ed25519.pub) в файл ~/.ssh/authorized_keys на сервере, тем самым позволяя подключаться к нему с помощью приватного ключа.

Подключение к серверу

Теперь вы можете подключиться к серверу по ssh без использования пароля:

ssh username@server_ip_or_hostname

Деактивация подключения по ssh с использованием пароля

Для отключения возможности подключиться к серверу по ssh необходимо внести изменения в файл конфигурации ssh (sshd_config) на сервере:

sudo nano /etc/ssh/sshd_config

Найдите в файле параметр PasswordAuthentication и установите его как показано ниже:

PasswordAuthentication no

Убедитесь, что у вас активна аутентификация по ключу:

PubkeyAuthentication yes

Если вы хотите отключить подключение по ssh для супер-пользователя root найдите параметр PermitRootLogin и установите для него значение no:

PermitRootLogin no

Сохраните файл и перезапустите ssh сервис, чтобы изменения вступили в силу:

sudo systemctl restart ssh

До завершения текущей ssh сессии откройте новый терминал и попытайтесь подключиться к серверу по ssh с помощью ключа, чтобы убедиться, что всё работает корректно:

ssh username@server_ip_or_hostname

Будьте осторожны: прежде чем полностью отключить аутентификацию по паролю убедитесь, что вход на основе ssh ключа работает, иначе вы рискуете потерять доступ к своему серверу!