Jak skonfigurować użytkownika sftp, aby logował się przy użyciu hasła do serwera Ubuntu EC2?

14

Mam Ubuntu Server działający na instancji EC2. Aby zalogować się do tego serwera, używam pliku certyfikatu bez hasła.

Zainstalowałem i skonfigurowałem vsftpd i stworzyłem użytkownika (nazwijmy go „testser”), dla którego ustawiłem terminal / bin / false ssh, aby mógł się łączyć tylko przez sftp i przesyłać / uzyskiwać pliki w swoim domu informator.

Jednak - kiedy próbuję połączyć się z serwerem z mojego komputera, działam

sftp testuser@my-ec2-server

dostaję

Odmowa dostępu (publickey).
Połączenie zamknięte

wiadomości, więc nie mogę się zalogować.

Jak mogę usunąć wymaganie certyfikatu tylko dla tego użytkownika (co oznacza, że ​​użytkownik „ubuntu” będzie musiał nadal używać pliku certyfikatu do logowania przez ssh), aby normalni klienci sftp mogli połączyć się przy użyciu nazwy użytkownika i hasła?

Dziękuję Ci.

PS Korzystanie z oficjalnego AMI Ubuntu Server 10.10 z kanonicznego, 64-bitowego na mikro instancji.

Doron
źródło

Odpowiedzi:

10

Aby osiągnąć to, co chcesz, musisz zrobić dwie różne rzeczy

  1. Zmień konfigurację sshd, aby akceptować hasła

Powiem przede wszystkim, że to zły pomysł, wolę wygenerować certyfikat dla użytkownika niż aktywować hasła, jednak jeśli chcesz to zrobić, po prostu edytuj /etc/ssh/sshd_configi zmień lub odkomentuj go, aby się pojawił PasswordAuthentication yes. Po zakończeniu zrestartuj sshdservice ssh restart

  1. Pozwól użytkownikom po prostu FTP używać sftp i nie mieć powłoki

Aby to osiągnąć, musisz zainstalować rsh (powściągliwą powłokę) i zmienić na nią powłokę użytkownika chsh username

Lynxman
źródło
Chcę tylko, aby ten konkretny użytkownik (testser), który będzie miał dostęp tylko do sftp, używał hasła zamiast certyfikatu. Część polegająca na niedozwoleniu temu użytkownikowi dostępu przez ssh, już to zrobiłem, definiując jego typ bash jako / bin / false
Doron
1
Doron, nie będziesz mógł pozwolić jednemu użytkownikowi na passwd, albo zezwalasz na uwierzytelnianie hasła dla wszystkich, albo dla nikogo. Również /bin/falsenie zezwala na połączenia sftp (każde połączenie ssh wymaga prawidłowej powłoki, tam rsh robi lewę)
lynxman
1
To nie działało dla mnie na Ubuntu EC2, nie jestem pewien, jaki dodatkowy krok mi brakuje, port 22 jest otwarty
Doug Molineux
Zobacz serverfault.com/questions/154957/..., aby skonfigurować tylko użytkownika sftp z hasłem ...
Raman,
0

Oto przewodnik krok po kroku, który pozwala:

  1. Dostęp SFTP do / home / bob / uploads dla użytkownika bob
  2. Zablokuj boba z SSH
  3. Używaj nazwy użytkownika / hasła zamiast kluczy:

Najpierw edytuj plik / etc / ssh / sshd_config:

sudo nano /etc/ssh/sshd

Przewiń w dół i zmodyfikuj:

PasswordAuthentication yes

i dodaj to na dole:

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

Naciśnij Ctrl-X, aby wyjść i zapisać.

Teraz dodaj użytkownika:

sudo useradd bob
sudo passwd bob

Teraz dodaj grupy i wyłącz ssh:

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

Teraz ustaw uprawnienia:

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

Wszystko to jest zalogowany jako użytkownik root (użytkownik ec2 na AMI Amazon Linux)

Rob Mulder
źródło
3
Nie musisz upuszczać spodni, aby umożliwić jednemu użytkownikowi korzystanie z uwierzytelniania za pomocą hasła.
EEAA