Як встановити sftp користувача для входу з паролем на сервер EC2 ubuntu?


14

У мене є сервер Ubuntu, який працює на екземплярі EC2. Для входу на цей сервер я використовую файл сертифікатів без пароля.

Я встановив і налаштував vsftpd і створив користувача (назвемо його "testuser"), для якого я встановив / bin / false ssh-термінал, тому він зможе підключатися лише через sftp та завантажувати / отримувати доступ до файлів у своєму будинку каталог.

Однак - коли я намагаюся підключитися до сервера зі свого комп’ютера, працює

sftp testuser@my-ec2-server

я отримав

Дозвіл відхилено (publickey).
З'єднання закрите

повідомлення, тому я не можу ввійти.

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

Дякую.

PS Використання Ubuntu Server 10.10 офіційного AMI від канонічного, 64-бітного на мікропримірнику.

Відповіді:


10

Для того, щоб здійснити те, що ви хочете, потрібно зробити дві різні речі

  1. Змініть конфігурацію sshd, щоб прийняти паролі

Спершу скажу, що це погано робити, я б скоріше генерував сертифікат для вашого користувача, ніж активував паролі, тим не менше, якщо ви хочете це зробити, просто відредагуйте /etc/ssh/sshd_configта змініть або відмежуйте його, щоб це було показано PasswordAuthentication yes. Після цього перезапустіть sshdservice ssh restart

  1. Нехай користувачі просто використовують FTP за допомогою sftp і не мають оболонки

Для того, щоб підтвердити, що вам потрібно встановити rsh (resticted shell) та змінити на нього оболонку користувача chsh username


Я хочу лише, щоб цей конкретний користувач (testuser), який матиме лише sftp доступ, використовувати пароль замість сертифіката. Частину заборони користувачеві доступу через ssh я вже зробив, визначивши тип bash як / bin / false
Дорон

1
Дороне, ви не зможете просто дозволити одному користувачеві через passwd, ви можете дозволити авторизацію пароля для всіх або ні для кого. Також /bin/falseне дозволять з'єднати sftp (будь-яке ssh-з'єднання потребує дійсної оболонки, саме тут rsh виконує трюк)
lynxman

1
Це не спрацювало для мене на Ubuntu EC2, не впевнений, що зайвий крок, який мені не вистачає, відкрито порт 22
Doug Molineux

Див. Сервер default.com/questions/154957/…, щоб налаштувати просто sftp користувача з паролем ...
Раман

0

Ось покрокове керівництво, щоб дозволити:

  1. SFTP доступ до / home / bob / завантаження для користувача bob
  2. Блокування блоку з SSH
  3. Використовуйте ім’я користувача / паролі, а не ключі:

Спочатку відредагуйте файл / etc / ssh / sshd_config:

sudo nano /etc/ssh/sshd

Прокрутіть вниз і змініть:

PasswordAuthentication yes

і додайте це внизу:

Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no  

Натисніть Ctrl-X для виходу та збереження.

Тепер додайте користувача:

sudo useradd bob
sudo passwd bob

Тепер додайте групи та відключіть ssh:

sudo groupadd sftpusers
sudo usermod  -g sftpusers bob
sudo usermod -s /usr/bin/rssh bob
sudo usermod -d /home/bob bob

Тепер встановіть дозволи:

sudo chown root:root /home/bob/
sudo chmod 755 /home/bob/
sudo mkdir /home/bob/uploads
sudo chown bob /home/bob/uploads

sudo service sshd restart

Все це під час входу в систему як користувач root (ec2-користувач у Amazon Linux AMI)


3
Не потрібно скидати штани лише для того, щоб один користувач міг використовувати авторизацію пароля.
EEAA
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.