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

14

У меня Ubuntu Server работает на экземпляре EC2. Для входа на этот сервер я использую файл сертификата без пароля.

Я установил и настроил vsftpd и создал пользователя (назовем его «testuser»), для которого я установил ssh-терминал / bin / false, чтобы он мог подключаться только через 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

lynxman
источник
Я только хочу, чтобы этот конкретный пользователь (testuser), который будет иметь доступ только по sftp, использовал пароль вместо сертификата. Часть, которая не позволяла этому пользователю получать доступ через ssh, я уже сделал, определив его тип bash как / bin / false
Дорон
1
Дорон, вы не сможете просто разрешить одного пользователя через passwd, вы либо разрешите ввод пароля для всех или ни для кого. Также /bin/falseне разрешает sftp-соединения (любое ssh-соединение нуждается в корректной оболочке, вот где rsh делает
свое дело
1
Это не сработало для меня в Ubuntu EC2, я не уверен, какой дополнительный шаг мне не хватает, порт 22 открыт
Doug Molineux
См. Serverfault.com/questions/154957/… чтобы настроить только пользователя sftp с паролем ...
Раман
-1

Вот пошаговое руководство, чтобы:

  1. SFTP доступ к / home / bob / uploads для пользователя 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