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

70

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

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

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

    
задан Oli 08.12.2010 в 17:01
источник

7 ответов

73

Изменить (как 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 [email protected]

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

sudo service ssh reload
    
ответ дан Lekensteyn 08.12.2010 в 18:57
источник
48

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

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

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

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

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

    
ответ дан user2292376 01.03.2014 в 18:32
10

В /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 , они не смогут выполнить sudo для root. Чтобы использовать su , вам необходимо установить пароль root ( passwd root ), после чего я рекомендую установить PermitRootLogin=no в /etc/ssh/sshd_config .

    
ответ дан Kees Cook 11.12.2010 в 08:15
10

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

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

sudo apt-get install openssh-server

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

/etc/ssh/sshd_config

Для этого требуется перезапустить службу.

sudo service ssh restart     

ответ дан Matt Mootz 08.12.2010 в 17:48
6

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

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

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

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

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

    
ответ дан Tok 08.12.2010 в 19:24
1

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

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

usermod -a -G sshusers jim

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

    
ответ дан Joshua Fricke 13.02.2018 в 01:22
0

Возможно, некоторые экземпляры PasswordAuthentication по умолчанию отключены.

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

    
ответ дан Aldee 24.08.2017 в 17:05