Ubuntu 16.04/18.04 - Создание нового пользователя и добавление ключей SSH

Я следую инструкциям по добавлению сертификата SSL в Ubuntu 16.04, но в инструкциях рекомендуется, чтобы это выполнялось не через пользователя root, а через суперпользователя. В результате я создал отдельного пользователя и добавил его в группу суперпользователей, но я остановился на шаге, который добавляет этому пользователю ключи ssh.

Во-первых, я должен переключиться на пользователя через su - *username, что приведет вас в каталог /home пользователя. Когда я проверяю путь с помощью pwd, он показывает /home, но когда я запускаю, меня отображает как пользователя root. Это правильно, поскольку технически я все еще вхожу в систему под root, но использую sudo для этого пользователя?

Затем нужно создать ~/.ssh/id_rsa.pub с моим ssh-ключом, но он уже существует, когда я запускаю команды. Примечание: я создал этого пользователя некоторое время назад и, возможно, добавил его тогда, но не уверен. Решил двигаться дальше, раз они есть.

Я попытался подключиться к своему пользователю по ssh, и он успешно подключился, но тут же закрылся. Есть идеи почему так?

ssh username@111.111.1.11
ghost@111.111.1.11's password: 
Welcome to Ubuntu 16.04

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as 

  System load:  0.08               Processes:           76
  Usage of /:   19.8% of 19.56GB   Users logged in:     0
  Memory usage: 42%                IP address for: 111.111.1.11
  Swap usage:   0%

  Graph this data and manage this system at:
    https://landscape.canonical.com/

0 packages can be updated.
0 updates are security updates.


The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

Last login: Fri Jun from xxx.x.xx.x.x.x
Connection to 111.111.1.11 closed.
9 симпатий

По умолчанию пользователь root является суперпользователем и единственным настоящим суперпользователем в ОС. Вы можете добавить пользователей sudo, у которых есть разрешение на эскалацию до root после аутентификации, хотя root все еще является суперпользователем :-).

Когда вы запускаете команды от имени пользователя sudo, если вы переходите на уровень root с помощью su, вы становитесь пользователем root, поэтому, когда вы проверяете свой домашний каталог, он может быть не тем, который вы ожидаете. Вам нужно запускать команды с помощью sudo:
sudo mycommand arg1 arg2 etc

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

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

т.е.

Создать домашний каталог + каталог .ssh
mkdir -p /home/mynewuser/.ssh

Создать файл авторизованных ключей
touch /home/mynewuser/.ssh/authorized_keys

Создать пользователя + Установить домашний каталог
useradd -d /home/mynewuser mynewuser

Добавить пользователя в группу sudo
usermod -aG sudo mynewuser

Установить разрешения
chown -R mynewuser:mynewuser /home/mynewuser/
chown root:root /home/mynewuser
chmod 700 /home/mynewuser/.ssh

chmod 644 /home/mynewuser/.ssh/authorized_keys

Установить пароль для пользователя
Если вы хотите иметь возможность входить в систему как пользователь без ключа SSH, установка пароля позволяет это, если аутентификация PasswordAuthentication включена в /etc/ssh/sshd_config
passwd mynewuser

Вы можете проверить домашний каталог пользователей, запустив:

echo $HOME

… при входе в систему как пользователь. Если вы выведете $PWD, он выведет вам текущий путь к каталогу, в котором вы находитесь. Поэтому, если запустить cd /home, через:

echo $PWD

… выведет мне /home. Если моя домашняя директори /home/mynewuser, тогда $HOME покажет мне эту директорию :-).

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

Например, чтобы сгенерировать ключ RSA, я бы использовал:

ssh-keygen -a 1000 -b 4096 -C "" -E sha256 -o -t rsa

Для ключа ED25519 я бы использовал:

ssh-keygen -a 1000 -C "" -E sha256 -o -t ed25519

-a - KDF Rounds (функция вывода ключа)

-b - Размер бит (относится к RSA, но не к ED25519)

-C - Устанавливает пустой комментарий к ключу

-e - Устанавливает используемый хэш ключа (по умолчанию sha256)

-o - Использует новый формат OpenSSH для ключей

-t - Указывает тип ключа (RSA / ED25519)

При использовании 1000 раундов KDF для генерации ключа требуется несколько секунд, если вы используете пароль, а также несколько секунд для входа в систему. Использование KDF генерирует более безопасный ключ, хотя вы должны быть осторожны, так как установка его слишком большого значения определенно вызовет серьезные задержки при попытке входа в систему (то есть 20000 раундов потребуют в среднем 2-4 минуты для генерации и столько же для входа в систему ).

Как только ваш публичный / закрытый ключ будет сгенерирован, поместите открытый ключ в:

/home/mynewuser/.ssh/authorized_keys

Загрузите закрытый ключ локально, а затем удалите оба ключа с сервера, поскольку они больше не нужны. Открытый ключ должен существовать только в указанном выше файле, и вы не должны хранить свой закрытый ключ на сервере :-).

6 симпатий