0Pricing
Cryptology Academy · Lekcja

SFTP i SCP: bezpieczny transfer plików

Porównają Państwo SFTP i SCP z niezabezpieczonym FTP oraz poznają zapewnianą przez nie ochronę kryptograficzną.

SFTP i SCP: bezpieczny transfer plików to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

SFTP to podsystem SSH, a nie FTP

Wbrew nazwie SFTP (SSH File Transfer Protocol) nie ma nic wspólnego z FTP. Jest to protokół binarny zaprojektowany do działania jako podsystem SSH-2, czyli przez istniejące uwierzytelnione i zaszyfrowane połączenie SSH. Klient SSH wywołuje podsystem SFTP na serwerze za pomocą polecenia ssh user@host -s sftp. Wszystkie operacje SFTP dziedziczą gwarancje bezpieczeństwa zapewniane przez transport SSH.

Możliwości SFTP

SFTP zapewnia bogaty zestaw operacji na plikach przez zaszyfrowany kanał: wyświetlanie zawartości katalogów, przesyłanie plików na serwer, pobieranie plików, usuwanie i zmienianie nazw plików, tworzenie i usuwanie katalogów, odczytywanie i ustawianie uprawnień oraz znaczników czasu plików, a także wznawianie przerwanych transferów. Dzięki tym możliwościom SFTP jest kompletnym interfejsem zdalnego systemu plików, a nie tylko narzędziem do transferu plików.

SCP: prostsze kopiowanie plików przez SSH

SCP (Secure Copy Protocol) to starszy, prostszy protokół służący do przesyłania plików przez SSH. Polecenie scp file.txt user@host:/path bezpiecznie kopiuje plik. SCP jest prostszy w użyciu niż SFTP w przypadku jednorazowych transferów, ale obsługuje tylko podzbiór operacji: kopiowanie z lokalnego systemu do zdalnego, ze zdalnego do lokalnego albo między dwoma zdalnymi systemami. Nie ma trybu interaktywnego i oferuje ograniczoną obsługę wznawiania przerwanych transferów.

Luki w protokole SCP

Oryginalny protokół SCP zawierał poważną lukę: złośliwy serwer mógł wysyłać do klienta dowolne pliki, niezależnie od tego, o co prosił klient. Atakujący kontrolujący serwer mógł nadpisywać pliki poza zamierzonym katalogiem docelowym. OpenSSH wycofał starszy protokół SCP na rzecz opartego na SFTP polecenia scp w OpenSSH 9.0 (2022). Współczesne polecenia scp korzystają pod spodem z SFTP, eliminując tę klasę ataków przy zachowaniu znanej składni polecenia.

FTP a FTPS i SFTP

Trzy opcje bezpiecznego przesyłania plików są często mylone. FTP (port 21) jest nieszyfrowany i nie należy go używać. FTPS (FTP over SSL) dodaje TLS do FTP na porcie 990 (tryb niejawny) lub porcie 21 (tryb jawny z AUTH TLS), co wymaga infrastruktury FTP oraz zarządzania certyfikatami. SFTP jest całkowicie odrębnym protokołem działającym przez SSH (port 22), który ponownie wykorzystuje istniejące mechanizmy uwierzytelniania i zarządzania kluczami SSH. SFTP jest zazwyczaj prostszy w konfiguracji i utrzymaniu niż FTPS.

rsync przez SSH do wydajnej synchronizacji

rsync to narzędzie do synchronizacji plików, które przesyła tylko zmienione fragmenty plików, dzięki czemu jest znacznie wydajniejsze niż SCP w przypadku przyrostowych kopii zapasowych. Uruchomienie rsync z flagą -e ssh kieruje wszystkie dane przez tunel SSH. Polecenie rsync -avz -e ssh user@host:/remote/ /local/ synchronizuje zdalny katalog z katalogiem lokalnym, przesyłając tylko zmienione dane. rsync przez SSH to standardowe rozwiązanie stosowane w przypadku kopii zapasowych serwerów i procesów wdrażania.

Obsługa dużych transferów plików

SFTP obsługuje transfery wznawialne: jeśli połączenie zostanie przerwane podczas przesyłania dużego pliku, transfer można wznowić od ostatniego potwierdzonego bajtu zamiast rozpoczynać go od początku. Klient sftp OpenSSH obsługuje polecenie reput służące do wznawiania wysyłania plików oraz reget służące do wznawiania ich pobierania. W przypadku bardzo dużych transferów (plików o rozmiarze wielu gigabajtów) narzędzia takie jak lftp zapewniają bardziej niezawodne zarządzanie transferami, z automatycznymi ponowieniami i ograniczaniem przepustowości.

Więzienia chroot SFTP dla ograniczonego dostępu

Serwer OpenSSH może ograniczyć użytkowników SFTP do określonego drzewa katalogów za pomocą więzienia chroot. Dodanie dyrektywy Match User wraz z ChrootDirectory i ForceCommand internal-sftp do konfiguracji SSH tworzy odizolowane środowisko SFTP. Użytkownik może wysyłać i pobierać pliki w wyznaczonym katalogu, ale nie może uzyskać dostępu do reszty systemu plików ani wykonywać poleceń powłoki. Rozwiązanie to jest szeroko stosowane do zarządzania plikami w hostingu internetowym oraz w portalach umożliwiających klientom przesyłanie plików.

Konfigurowanie serwera SFTP

Włączenie SFTP na serwerze OpenSSH wymaga dodania wpisu Subsystem sftp /usr/lib/openssh/sftp-server do pliku sshd_config. Plik binarny sftp-server obsługuje wszystkie operacje protokołu SFTP. W konfiguracjach chroot dyrektywa ChrootDirectory musi należeć do użytkownika root i nie może być zapisywalna przez żadnego innego użytkownika, co jest częstym źródłem błędów konfiguracji. Przetestowanie konfiguracji za pomocą sshd -t pozwala sprawdzić jej składnię przed ponownym załadowaniem usługi.

SFTP w zautomatyzowanych procesach tworzenia kopii zapasowych

SFTP dobrze integruje się ze zautomatyzowanymi potokami tworzenia kopii zapasowych. Serwer kopii zapasowych używa uwierzytelniania za pomocą klucza publicznego, aby łączyć się bez haseł, co umożliwia transfery uruchamiane zgodnie z harmonogramem cron bez udziału człowieka. Użytkownik kopii zapasowych jest ograniczony przez chroot do katalogu przesyłania, co ogranicza potencjalne szkody w przypadku przejęcia serwera kopii zapasowych. Monitorowanie dzienników pod kątem nieudanych połączeń SFTP i błędów transferu zapewnia wczesne ostrzeganie o problemach z kopiami zapasowymi, zanim wpłyną one na możliwość odzyskania danych.

Narzędzia klienta SFTP

Oprócz klienta sftp działającego z poziomu wiersza poleceń narzędzia graficzne, takie jak FileZilla, Cyberduck i WinSCP, obsługują SFTP za pomocą interfejsów typu „przeciągnij i upuść”, zarządzania zakładkami oraz widoków katalogów obok siebie. Narzędzia te są popularne wśród programistów i administratorów, którzy preferują pracę w interfejsie graficznym. Wszystkie korzystają z tego samego protokołu SFTP oraz uwierzytelniania SSH, w tym z obsługi plików kluczy SSH i systemowego agenta SSH.

SFTP a SCP

Jaka była główna luka w zabezpieczeniach starszego protokołu SCP, która doprowadziła do zastąpienia go przez OpenSSH implementacją opartą na SFTP?

SFTP i SCP: najważniejsze informacje

SFTP jest podsystemem SSH i nie ma związku z FTP. Zapewnia pełną obsługę zdalnego systemu plików za pośrednictwem szyfrowanego SSH. SCP jest prostszy, ale starszy protokół zawierał podatność path traversal po stronie serwera, naprawioną w OpenSSH 9.0 przez przełączenie implementacji na SFTP. FTPS dodaje TLS do FTP, podczas gdy SFTP w całości opiera się na SSH. rsync przez SSH zapewnia wydajną synchronizację przyrostową. Więzienia chroot ograniczają użytkowników SFTP do wyznaczonych katalogów.

Często zadawane pytania

Czy lekcja „SFTP i SCP: bezpieczny transfer plików” jest bezpłatna?

Tak — pełny tekst „SFTP i SCP: bezpieczny transfer plików” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „SFTP i SCP: bezpieczny transfer plików”?

Porównają Państwo SFTP i SCP z niezabezpieczonym FTP oraz poznają zapewnianą przez nie ochronę kryptograficzną. Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „SFTP i SCP: bezpieczny transfer plików”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Co sprawia, że protokół jest bezpieczny
  2. SSH: zabezpieczanie zdalnego dostępu
  3. SFTP i SCP: bezpieczny transfer plików
  4. DNSSEC: uwierzytelnianie odpowiedzi DNS
← Powrót do Cryptology Academy