Создайте нового пользователя SSH на сервере Ubuntu

Только что создал новый виртуальный сервер Ubuntu, и я нахожусь в процессе его настройки для использования в производстве. У меня есть учетная запись root. Я хочу сделать следующее:

  • Создать нового пользователя (назову его jim). Я хочу, чтобы у них был /home/ каталог.
  • Дать jim Доступ по SSH.
  • Позволять jim выполнять su для ускоренения, но не для выполнения sudo операции.
  • Отключите корневой доступ по SSH.
  • Переместите SSHd на нестандартный порт, чтобы помочь остановить грубые атаки.

Моя проблема связана с первыми двумя пунктами. Я уже нашел useradd но по какой-то причине я не могу войти в систему как пользователь, созданный с его помощью по SSH. Нужно ли мне обойти SSHd, чтобы разрешить это?

SSH очень требователен к разрешениям для каталогов и файлов. Убедитесь, что:

  1. Каталог /home/username/.ssh имеет разрешение "700" и принадлежит пользователю (не root!)
  2. Файл /home/username/ssh/authorized_keys имеет разрешение "600" и принадлежит пользователю

Скопируйте свой открытый ключ в файл authorized_keys.

sudo chown -R username:username /home/username/.sshsudo chmod 0700 /home/username/.sshsudo chmod 0600 /home/username/.ssh/authorized_keys

Есть НЕТ нужно добавить пользователя в /etc/ssh/ssh_config.

Редактировать (как root) /etc/ssh/sshd_config. Добавьте к нему следующее:

Port 1234PermitRootLogin noAllowUsers jim

Port 1234 заставляет SSH прослушивать порт 1234. Вы можете использовать любой неиспользуемый порт от 1 до 65535. Рекомендуется выбрать привилегированный порт (порт 1-1024), который может использоваться только root. Если ваш SSH-демон по какой-либо причине перестает работать, вредоносное приложение не сможет перехватить соединение.

PermitRootLogin запрещает прямой вход в систему с правами суперпользователя.

AllowUsers jim позволяет пользователю jim для входа в систему через SSH. Если вам не нужно входить в систему отовсюду, вы можете сделать это более безопасным, ограничив jim IP-адресом (замените 1.2.3.4 вашим фактическим IP-адресом).:

AllowUsers jim@1.2.3.4

Изменения в файле конфигурации /etc/ssh/sshd_config применяются не сразу, чтобы перезагрузить конфигурацию, запустите:

sudo service ssh reload

Там будут подсказки в /var/log/auth.log о том, почему SSH (или PAM) отклоняет попытку входа в систему. Дополнительные подсказки могут быть найдены с помощью -v вариант с тсс клиент. Несколько распространенных ситуаций, некоторые из которых упоминаются в других ответах:

  • в учетной записи пользователя отсутствует пароль или она иным образом отключена (см. man passwd, попробуйте сбросить пароль или проверить содержимое /etc/shadow).
  • /etc/ssh/sshd_config настроен на запрет входа в систему (DenyUsers, AllowUsers, PasswordAuthentication, PubkeyAuthentication, UsePAM и т.д., см. man sshd_config).
  • оболочка пользователя не указана в /etc/shells.
  • различные проблемы с разрешениями для каталогов или файлов, связанные с работой SSH: /etc/ssh, /home/jim/.ssh, /home/jim/.ssh/* и т.д.

Я бы также рекомендовал использовать добавить пользователя (вместо пользовательское дополнение) для добавления новых пользователей; это немного более дружелюбно относится к различным настройкам учетной записи по умолчанию.

До тех пор, пока пользователь не является частью admin группы, они не смогут потеть чтобы укорениться. Чтобы они могли использовать Ваш, вам нужно будет установить пароль root (passwd root), после чего я рекомендую установить PermitRootLogin=no в /etc/ssh/sshd_config.

Я могу ошибаться, но мне всегда приходится устанавливать демон сервера, прежде чем я смогу подключиться (по крайней мере, на рабочем столе) ssh установлен по умолчанию, но это всего лишь клиент

эта команда устанавливает сервер

sudo apt-get install openssh-server

Вы можете изменить порт и остановить вход в систему root, отредактировав

/etc/ssh/sshd_config

Однако для этого вам необходимо перезапустить службу.

sudo service ssh restart

У Джима не будет доступа по SSH до тех пор, пока вы не установите пароль. Как root выполнить:

grep -i "jim" /etc/shadow | awk -F':' '{ print $2 }'

Если эта команда возвращает символ "!", то вход в систему для этой учетной записи отключен. Проведение passwd jim as root предложит вам ввести новую и подтвержденную строку пароля, после чего приведенная выше команда grep должна вернуть хэшированную строку, представляющую пароль для jim.

Также обязательно убедитесь, что у jim есть оболочка входа в систему, установленная по умолчанию, и существующий домашний каталог.

Пожалуйста, обратите внимание на сообщение Лекенштейна для получения информации об изменении настроек SSH-сервера.

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

Используя приведенный выше пример с пользователем jim и принять члена группы jim поскольку это только группа (проблема groups команда при входе в систему как jim чтобы найти группы, частью которых вы являетесь). В моем /etc/ssh/sshd_config файл, который у меня был AllowGroups sshusers запись и, следовательно, необходимо добавить jim к sshusers группа. Ниже показано, как это будет достигнуто:

usermod -a -G sshusers jim

Замените свою группу и пользователя в соответствии с вашей конфигурацией.

Простая заметка:

Открытый ключ должен быть записан внутри этого файла:

/home/newUsername/.ssh/authorized_keys

Могут быть некоторые случаи, когда PasswordAuthentication по умолчанию отключен.

Пожалуйста, проверьте /etc/ssh/sshd_config и обеспечить, чтобы PasswordAuthentication атрибут имеет значение yes.

@Lekensteyn Я не могу оставить комментарий к ответу на вопрос, потому что у меня нет репутации, но я попытался добавить

AllowUsers existingUser,newUser

в мой файл / etc / ssh / sshd_config, и теперь я больше не могу использовать ssh как с моим существующим пользователем, так и с новым пользователем.

@B. Roland У меня действительно есть файл “/etc/nologin”, но он пуст. Я удалил его и перезапустил ssh, но он по-прежнему просто отвечает: "В разрешении отказано, пожалуйста, попробуйте еще раз.`когда я пытаюсь войти в систему.

Лекенштейн: да, это опечатка. Пользователя на самом деле зовут не “Джим”, поэтому я его редактировал… Очевидно, он там увлекся.

Не могли бы вы уточнить свой третий пункт? Почему вы разрешаете root с помощью su, но запрещаете sudo?

Я написал скрипт для автоматизации этого: GitHub - TeamHG-Memex/sshadduser: A simple tool to add a new user with OpenSSH keys.

Привет! Я могу помочь вам с серверами, я не знаю, в чем ваша проблема с SSH, потому что для меня конфигурация по умолчанию никогда не отказывает в моем соединении. Вы можете увидеть man 5 nologin, это пишет, что если /etc / nologin существует, вы можете войти в систему только с правами root. Попробуйте войти в систему обычным способом, затем запишите результаты.

Что такое оболочка пользователя? Это /bin/bash? Проверьте это в /etc/password. Убедитесь, что это не /dev/null или /bin/false.

Да, LFC_fan или /etc/nologin тоже. Используйте (sudo) cat /etc/passwd | grep.

@LFC_fan это /bin/bash

Вот строка пароля: jimx:1000:1000::/home/jim:/bin/bash

Вы допустили опечатку? Между “jim” и “x” действительно должно быть :. Почему вы разрешаете “su” для root, но запрещаете “sudo”?