Створіть нового користувача SSH на сервері Ubuntu


104

Щойно створив новий віртуальний сервер Ubuntu, і я перебуваю в процесі загартування його для виробничого використання. Наразі у мене є кореневий рахунок. Я хочу зробити наступне:

  • Створіть нового користувача (давайте зателефонуємо їм jimна решту цього). Я хочу, щоб вони мали /home/довідник.
  • Надати jimдоступ до SSH.
  • Дозволити , jimщоб suвикорінювати , але не виконувати sudoоперації.
  • Вимкніть кореневий доступ до SSH.
  • Перемістіть SSHd в нестандартний порт, щоб допомогти зупинити жорстокі атаки.

Моя проблема полягає в перших двох пунктах. Я вже знайшов, useraddале я чомусь не можу ввійти як користувач, створений ним через SSH. Чи потрібно бити SSHd, щоб дозволити це?


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

Що таке оболонка користувача? Це / bin / bash? Перевірте це в / etc / password. Переконайтеся, що це не / dev / null або / bin / false.
LFC_fan

Так, LFC_fan, або / etc / nologin теж. Використовуйте (sudo) cat / etc / passwd | grep jim
antivirtel

1
@B. Roland У мене є /etc/nologinфайл, але він порожній. Я видалив його і перезапустив ssh, але він все ще просто відповідає, Permission denied, please try again.коли я намагаюся ввійти.
Oli

@LFC_fan it / bin / bash
Oli

Відповіді:


99

Редагувати (як корінь) /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

10
+1: Примітка: ці інструкції все ще застосовні до новіших версій Ubuntu (наприклад, 13.04). Якщо ви хочете rootлогін, однак, (можливо , ви до сих пір настройки сервера), необхідно встановити , PermitRootLoginщоб yesі додати rootдо AllowUsers.
JRG-Developer

4
який пароль для цього користувача?
Wolfpack'08

Мій VPS постачається з кореневим паролем для входу в 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перезавантажено. Якщо це не допомагає, будь ласка, створіть нове запитання.
Лекенштейн

96

SSH дуже вибагливий щодо дозволів для каталогу та файлів. Переконайтесь, що:

  1. Каталог /home/username/.ssh має дозвіл "700" і належить користувачеві (а не root!)
  2. / Home / username / ssh / pooblasti_keys має дозвіл "600" і належить користувачеві

Скопіюйте свій відкритий ключ у файл дозволених ключів.

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.


1
Моя проблема була чудовою, я створив ~./sshяк root і ніколи не надав користувачеві права власності.
Герве

1
Моя проблема полягала в тому, що я намагався використовувати /root/.ssh/authorized_keysзамість цього /home/bob/.ssh/authorized_keys.
Alex W

Я можу підтвердити: на нашому хостингу VPS редагувати не було потреби ssh_config. Налаштування цього каталогу та файлів було достатньо.
superjos

2
Для мене це повинно бути chmod 755 /home/username/.ssh, інакше це не працює.
Jim W

Набагато простіше увійти як користувач (або sudo su --login {user}) та запустити ssh-keygen-> Папка ".ssh", ключ + cert та дозволи виконані. Просто створіть довірені ключі відповідно до ваших інструкцій
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групи, вони не зможуть судо корінь. Щоб вони могли використовувати su , вам потрібно буде встановити пароль root ( passwd root), після чого я рекомендую встановити PermitRootLogin=noв /etc/ssh/sshd_config.


Велике спасибі за чудову відповідь - спеціально "аддусер" дуже допоміг!
vishal.biyani

11

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

ця команда встановлює сервер

sudo apt-get install openssh-server

Ви можете змінити порт і зупинити вхід у систему, редагуючи

/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.


"Якщо ця команда повертає символ"! ", Тоді вхід для цього облікового запису вимкнено." Зверніть увагу, це не означає, що ви не можете SSH; лише те, що ви не можете це зробити з паролем (порівняно з вашим відкритим ключем).
bfontaine

3

У моєму випадку у мене була група, якій було дозволено доступ, і користувач не був її частиною. Це вирішило це для мене.

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

usermod -a -G sshusers jim

Замініть свою групу та користувача відповідно до конфігурації.


1
ви повинні вдосконалити свою відповідь, посилаючись на джерело, яке краще пояснює ваш приклад, або додаючи відповідну інформацію, спираючись на свій приклад на оригінальне питання ОП. наприклад, користувач вказаний jimяк фіктивний користувач для надання контексту. стаття тут це добре пояснює.

0

Можливо, в деяких випадках випадки PasswordAuthenticationвідключення за замовчуванням.

Будь ласка, перевірте /etc/ssh/sshd_configі переконайтеся, що PasswordAuthenticationатрибут встановлено yes.


0

@Lekensteyn Я не можу залишити коментар до відповіді на запитання, оскільки у мене немає репутації - але я спробував додати

AllowUsers existingUser,newUser

до мого файлу / etc / ssh / sshd_config, і тепер я більше не можу використовувати ssh як зі своїм існуючим, так і з новимUser.


Я розумію ваш біль: у DI колись було те саме питання. Рішення: AllowUsers existingUser@* newUser@*
İsmail Atkurt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.