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

104

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

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

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

Оли
источник
Здравствуй! Я могу помочь вам с серверами, я не знаю, в чем ваша проблема с SSH, потому что для меня конфигурация по умолчанию никогда не отказывает в моем соединении. Вы можете увидеть man 5 nologin , который пишет, что если существует / etc / nologin, вы можете войти только с root. Попробуйте войти нормально, затем напишите результаты.
антивиртель
Что такое оболочка пользователя? Это / bin / bash? Проверьте это в / etc / password. Убедитесь, что это не / dev / null или / bin / false.
LFC_fan
Да, LFC_fan или / etc / nologin тоже. Используйте (sudo) cat / etc / passwd | grep jim
антивиртель
1
@B. Роланд, у меня есть /etc/nologinфайл, но он пуст. Я удалил его и перезапустить SSH , но это все-таки просто реагирует , Permission denied, please try again.когда я пытаюсь войти.
Оли
@LFC_fan это / bin / bash
Оли

Ответы:

99

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

Port 1234
PermitRootLogin no
AllowUsers 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
Lekensteyn
источник
10
+1: Примечание: эти инструкции по-прежнему применимы к более новым версиям Ubuntu (например, 13.04). Если вы хотите rootлогин, однако, (возможно , вы до сих пор настройки сервера), необходимо установить , PermitRootLoginчтобы yesи добавить rootк AllowUsers.
JRG-Developer
4
какой пароль у этого пользователя?
Wolfpack'08
Мой VPS поставляется с паролем root для входа SSH на порт 22. Добавление ответа к sshd_config приводит к невозможности входа в систему с помощью root. Это потому, что я также использовал порт 22 для jim или есть какая-то другая причина?
Wolfpack'08
1
@Lekensteyn Я обнаружил, что просто добавление нового пользователя в Ubuntu создает учетную запись ssh для этого пользователя .... useradd -m -G sudo,adm -s /bin/bash mecharokиpasswd mecharok
Wolfpack'08
3
@ Wolfpack'08 Используется AllowUsers username1,username2для ограничения входа в систему SSH для этих пользователей. Убедитесь, что sshdперезагружен. Если это не поможет, создайте новый вопрос.
Лекенштейн
97

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

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

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

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

Там нет НИКАКОЙ необходимости добавления пользователя в / и т.д. / SSH / ssh_config.

dh1tw
источник
2
Моя проблема была выбрана, я создал ~./sshот имени пользователя root и никогда не передавал права собственности пользователю.
Герве
1
Моя проблема заключалась в том, что я пытался использовать /root/.ssh/authorized_keysвместо /home/bob/.ssh/authorized_keys.
Алекс W
Могу подтвердить: на нашем VPS-хостинге не было необходимости редактировать ssh_config. Настройка этого каталога и файла было достаточно.
Superjos
2
Для меня это должен был быть chmod 755 /home/username/.ssh, иначе это не сработало бы.
Джим В.
Гораздо проще войти в систему как пользователь (или sudo su --login {user}) и запустить ssh-keygen-> Папка ".ssh", ключ + сертификат и права доступа завершены. Просто создайте авторизованные ключи согласно вашим инструкциям.
bshea
13

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

  • Учетная запись пользователя не имеет пароля или иным образом отключена (см. 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/*и т.д.

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

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

Кис Кук
источник
Большое спасибо за отличный ответ - специально "adduser" очень помог!
vishal.biyani
11

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

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

sudo apt-get install openssh-server

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

/etc/ssh/sshd_config

Это требует от вас перезапустить службу, хотя.

sudo service ssh restart

Мэтт Моотц
источник
Это виртуальный сервер (VPS), поэтому SSH установлен по умолчанию. Это мой единственный интерфейс с сервером. И sudo /etc/init.d/ssh reloadвместо этого вы можете перезагрузить конфигурацию , но хорошая информация.
Оли
8

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

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

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

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

Обратите внимание на пост lekensteyn для получения информации об изменении настроек сервера SSH.

Tok
источник
«Если эта команда возвращает символ«! », То для этой учетной записи вход в систему отключен». Обратите внимание, это не означает, что вы не можете использовать SSH; только то, что вы не можете сделать это с паролем (по сравнению с вашим открытым ключом).
bfontaine
3

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

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

usermod -a -G sshusers jim

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

Джошуа Фрике
источник
1
Вы должны улучшить свой ответ, обратившись к источнику, который лучше объясняет ваш пример, или добавив соответствующую информацию, основываясь на исходном вопросе OP. например, пользователь указал jimв качестве фиктивного пользователя для предоставления контекста. статья здесь объясняет это хорошо.
0

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

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

Aldee
источник
0

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

AllowUsers existingUser,newUser

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

ptjetty
источник
Я понимаю вашу боль: У меня одна и та же проблема. Решение: AllowUsers existingUser@* newUser@*
Исмаил Аткурт