Jak skonfigurować serwer SFTP z użytkownikami chrootowanymi w katalogach domowych? [duplikować]

20

Próbowałem skonfigurować serwer SFTP z wieloma użytkownikami chrootującymi w swoich domowych katalogach. Postępowałem zgodnie z radą na tego przewodnika ( Archive.org link ), a następnie wykonał następujące polecenia w katalogach użytkownika

chown root:root /home/user/
chmod 755 /home/user/

W katalogu domowym każdego użytkownika znajduje się dodatkowy katalog o nazwie public , którego właścicielem jest jego użytkownik, aby umożliwić im tworzenie katalogów oraz przesyłanie i usuwanie plików w razie potrzeby. (Zostało to opisane w przewodniku, o którym wspomniałem wcześniej)

Teraz, gdy wykonuję sftp -P 435 user@localhost , pojawia się ten błąd:

  

Zapis nie powiódł się: uszkodzona rura
  Nie można odczytać pakietu: Połączenie zresetowane przez peera

Jak przejść dalej? Ostatecznym pomysłem jest, aby każdy użytkownik na jakimś innym komputerze użył FileZilla do zalogowania się do chrootowanych katalogów domowych, a następnie mógł przesyłać katalogi i pliki. Wszystko to w SFTP (bo jest bezpieczniejsze)

    
zadawane Nitin Venkatesh 17.06.2011, 17:10
źródło

5 odpowiedzi

24

Ten artykuł opisuje także, jak uzyskać chrootowany dostęp do powłoki, ale ponieważ potrzebujesz tylko konta sftp, postępuj zgodnie z tymi instrukcjami:

Edytuj /etc/ssh/sshd_config i dodaj linie:

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

Znajdź wiersz UsePAM yes i skomentuj:

#UsePAM yes

Bez wyłączenia tego mój serwer SSH ulegał awarii podczas ponownego ładowania / ponownego uruchamiania. Ponieważ nie potrzebuję wyrafinowanych funkcji PAM, jest to w porządku.

Aby uzyskać dodatkowe zabezpieczenia, ogranicz użytkowników, którzy mogą się logować. Jeśli zapomnisz dodać użytkowników SFTP do grupy sftp , dajesz im bezpłatny dostęp do powłoki. Niezły scenariusz. Ponieważ SSH nie może łączyć AllowUsers i AllowGroups (login musi spełniać obie reguły), musisz utworzyć dodatkową grupę, na przykład ssh-users . Dodaj użytkowników, którzy mogą się logować ( youruser poniżej) przez SSH:

sudo groupadd ssh-users
sudo gpasswd -a youruser ssh-users

I dodaj następną linię do /etc/ssh/sshd_config :

AllowGroups ssh-users sftp

Teraz kontynuuj modyfikowanie uprawnień katalogu domowego użytkownika, aby umożliwić chrootowanie (na przykład użytkownik sftp-user ):

sudo chown root:sftp-user /home/sftp-user
sudo chmod 750 /home/sftp-user

Utwórz katalog, w którym sftp-user może dowolnie umieszczać w nim pliki:

sudo mkdir /home/sftp-user/public
sudo chown sftp-user: /home/sftp-user/public
sudo chmod 750 /home/sftp-user/public

Jeśli wystąpią jakiekolwiek problemy, sprawdź /var/log/syslog i /var/log/auth.log , aby poznać szczegóły. Uruchom ssh lub sftp z opcją -vvv dla debugowania wiadomości. Dla sftp opcja musi pojawić się przed hostem jak w sftp -vvv user@host .

    
odpowiedział Lekensteyn 17.06.2011, 18:36
źródło
8

Używam Ubuntu LTS 12.04 i po wielu problemach zadziałało to dla mnie.

Moje ustawienia dla /etc/ssh/sshd_config

Subsystem sftp internal-sftp -f AUTH -l VERBOSE
UsePAM yes
Match group sftp
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no
  1. create group sftp:

    groupadd sftp

  2. Utwórz użytkownika bezpośrednio z dołączoną nową grupą sftp:

    sudo useradd -d /ftpusers/HomeFolder -m UserName -g sftp -s /bin/false

  3. ustaw uprawnienia do używania z ssh dla sftp:

    chown root:root HomeFolder

    chmod 755 HomeFolder

  4. uruchom ponownie usługę:

    service ssh restart

Zauważ, że folder macierzysty nowego użytkownika sftp musi zostać właścicielem root'a.

    
odpowiedział Aten 16.10.2012, 15:41
źródło
7

Chciałem tylko dodać, że uprawnienia do folderu w drzewie katalogów muszą być ustawione w określony sposób.

  

Sshd surowe prawa własności / uprawnienia dyktują, że każdy   katalog na ścieżce chroot musi należeć do roota i tylko do zapisu   przez właściciela.

Source

Miałem bardzo podobny błąd, a poprawienie uprawnień do katalogu rozwiązało problem.

    
odpowiedział Nathan Jones 30.09.2015, 22:08
źródło
3

Oto przewodnik krok po kroku, aby:

  1. Dostęp SFTP do / home / bob / uploads dla użytkownika Bob
  2. Zablokuj bob z SSH
  3. Używaj nazwy użytkownika / haseł 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 zalogowane jako użytkownik root (użytkownik ec2 na platformach Amazon Linux AMI)

    
odpowiedział Rob Mulder 26.07.2016, 03:28
źródło
0

Należy również pamiętać, dodając dyrektywę Dopasuj do pliku konfiguracyjnego, że wszelkie dyrektywy, które nie pasują do tego, co pasujesz, mogą przestać działać. Zamiast komentować wszystko, co nie jest kompatybilne, po prostu przenieś sekcje, które zawierają dyrektywę Dopasuj na koniec pliku konfiguracyjnego.

Ponadto, uprawnienia prawdopodobnie muszą być ustawione na 755 w katalogu chroot i katalogach nadrzędnych, a właściciel na root: root. Osobiście skonfigurowałem katalog sshd_config dla chroot na% h, katalog domowy użytkownika, a następnie ustawię katalog domowy tam, gdzie chcę, na przykład, /var/www/examplewebsite.com. Niektórzy mogą preferować konfigurację katalogu domowego chroot ze statyczną częścią, po której następuje nazwa użytkownika, na przykład / var / www /% u, jednak wymaga to oczywiście zapewnienia, że ​​katalog chroot użytkownika jest zgodny z nazwą użytkownika.

Aby rozwiązać problemy z połączeniem, zatrzymaj usługę ssh, upewniając się, że otworzysz sesję SSH lub dwa pierwsze do testowania, a następnie uruchom demona interaktywnie w trybie debugowania, aby sprawdzić informacje o debugowaniu połączenia, ponieważ może to pomóc w zidentyfikowaniu problemów i wyszukaj, jak je naprawić.

Polecenia: service ssh stop; / usr / sbin / sshd -d

Pamiętaj, aby po ssh ponownie uruchomić program ssh! Polecenie: service ssh start

    
odpowiedział RedScourge 28.01.2016, 03:09
źródło

Przeczytaj inne pytania na temat tagów