SFTP – czyli SSH File Transfer Protocol – to protokół komunikacyjny, który umożliwia przesyłanie plików za pomocą SSH. Jego zaletą jest szyfrowanie transmisji za pomocą klucza szyfrującego jak i możliwość uwierzytelniania za pomocą certyfikatów.
SFTP jest dostępny w OpenSSH ale przy domyślnej konfiguracji ma kilka niepożądanych cech. Użytkownicy mając dostęp do SSH – mogą się zdalnie zalogować w systemie i surfować po całym drzewie katalogów. Wystarczy kilka drobnych zmian w ustawieniach sshd, aby uwięzić użytkownika w jego domowym katalogu i zabronić mu dostępu przez ssh – jednocześnie pozwalając na bezproblemowe korzystanie z SFTP i zalogowanie lokalnie w systemie.
*Wszystkie polecenia są wykonane w systemie Ubuntu 12.04.1.
Logujemy się do systemu i instalujemy OpenSSH-Server następującym poleceniem (jeśli ktoś nie ma):
sudo apt-get install openssh-server
Dodajemy teraz grupę, która będzie miała dostęp tylko do SFTP, ale nie będzie mogła się logować poprzez SSH w systemie:
sudo groupadd sftponly
Dodajemy też testowego użytkownika, nadajemy mu hasło i dodajemy go do grupy sftponly
sudo useradd -m sftptest sudo passwd sftptest sudo usermod -aG sftponly sftptest
W tym momencie można się bez problemu zalogować przez SSH oraz korzystać z SFTP. Teraz zmodyfikujemy ustawienia demona SSH. Za pomocą swojego ulubionego edytora tekstu otwieramy plik konfiguracyjny poleceniem:
sudo vi /etc/ssh/sshd_config
Odnajdujemy linię :
"Subsystem sftp /usr/lib/openssh/sftp-server"
i zmieniamy na:
"Subsystem sftp internal-sftp"
Na końcu pliku dopisujemy:
Match group sftponly ChrootDirectory %h X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
Zapisujemy plik i restartujemy demona ssh poleceniem:
sudo service ssh restart
Musimy jeszcze zmienić ustawienia katalogu domowego użytkownika – robimy to poleceniami:
sudo chown root:root /home/sftptest sudo chmod 755 /home/sftptest
Ostatnim krokiem jest dodanie kilku przykładowych katalogów i nadanie im uprawnień dla użytkownika sftptest.
cd /home/sftptest sudo mkdir Dokumenty public_html sudo chown sftptest:sftptest *
Gotowe! Od tej pory użytkownik może korzystać z SFTP ale nie ma dostępu do SSH. W tutorialu SFTP więzi użytkownika w jego katalogu domowym, ale nic nie stoi na przeszkodzie, aby udostępnić inny katalog np /var/www – wystarczy tylko pamiętać o odpowiednich uprawnieniach, czyli – katalog, w którym ma być uwięziony użytkownik, musi mieć koniecznie właściciela i grupę root.























Więzienie więzieniem, ale np i tak nie da się kontrolować maksymalnego transferu po sftp. Zostaje proftpd :/
Chodzi Ci o przepustowość czy ile zjadł łącza?
Chodzi mi o ograniczenie np ilości jednoczesnych połączeń i maksymalnego transferu na połączenie
Do sftp polecam MySecureShell. Bardzo elastyczny, łatwa konfiguracja.
Czy mi się wydaje czy to ma GUI? :D
Jeśli ktoś nie lubi plików konfiguracyjnych , to jakieś gui do konfiguracji MySecureShell jest . Osobiście gui do konfiguracji nie używałem ( plik konfiguracyjny jest bardzo czytelny ).
Dziwnie się czuję jak widzę GUI do konfiguracji serwera na Linuksie :P
No właśnie powiem coś od siebie. Zawsze szukałem GUI do konfigurowania czegoś na Linuksie. Czy to do Samby czy to PHP. Ale potem zobaczyłem, że np. w takim konfiguratorze do PHP mam np. checkbox:
[ ] safe_mode
a w pliku
safe_mode = On.
Zamiast zaznaczać myszką można wpisać On. Konfiguracja z palca nie jest trudna i można więcej niż przez GUI.