sftp to interaktywny program do przesyłania plików działający po szyfrowanym kanale SSH. Traktuj go jak bezpieczniejszego kuzyna klasycznego FTP: te same polecenia (put, get, ls, cd), ale całość leci przez port 22 z pełnym szyfrowaniem i tą samą autoryzacją co ssh. Kiedy odpalasz sftp user@host, lądujesz w interaktywnym promptcie sftp>, gdzie poruszasz się jednocześnie po zdalnym i lokalnym systemie plików. Idealne, gdy chcesz wrzucić kilka plików na serwer albo pobrać logi, a nie masz ochoty konfigurować rsync ani stawiać osobnego serwera FTP.
Składnia i najważniejsze opcje
Podstawowa forma: sftp [-P port] [-i klucz] użytkownik@host
-P port— port zdalnego serwera SSH. Uwaga: to wielka litera, w przeciwieństwie dossh, gdzie port podajesz przez małe-p.-i klucz— plik z kluczem prywatnym do autoryzacji, np.~/.ssh/id_ed25519.-r— rekurencyjne kopiowanie katalogów (używane zput/getwewnątrz sesji).-a— wznawia przerwane transfery zamiast nadpisywać częściowo pobrane pliki od zera.-b plik— tryb wsadowy: czyta polecenia z pliku zamiast z klawiatury. Idealne do skryptów.-o opcja— przekazuje opcję prosto dosshw formacie zssh_config, np.-o StrictHostKeyChecking=no.-C— włącza kompresję (przydatne przy dużych plikach tekstowych na wolnym łączu).
Przykłady użycia
sftp [email protected]— łączy się i otwiera interaktywną sesję na domyślnym porcie 22.sftp -P 2222 [email protected]— połączenie z serwerem nasłuchującym na niestandardowym porcie 2222.sftp -i ~/.ssh/deploy_key [email protected]— logowanie kluczem prywatnym zamiast hasłem.get -r /var/www/logs ./kopia— wpisane wewnątrz sesji: pobiera rekurencyjnie cały katalog logów na dysk lokalny.sftp -b polecenia.txt user@host— tryb wsadowy: wykonuje listę komend z pliku bez pytania o nic, świetne do crona.
Częste błędy i pułapki
Najczęstsza wpadka to mylenie -P z -p. W sftp port to wielkie -P, a małe -p w ogóle nie oznacza portu (służy do zachowania uprawnień i czasów plików przy transferze). W ssh jest odwrotnie, więc łatwo się pomylić.
Pamiętaj też, że w sesji masz dwa zestawy poleceń: zwykłe (cd, ls, pwd) działają po stronie zdalnej, a te z prefiksem l (lcd, lls, lpwd) po lokalnej. Wrzucisz plik nie tam, gdzie myślisz, jeśli o tym zapomnisz.
W trybie wsadowym -b błąd dowolnego polecenia domyślnie przerywa cały skrypt. Jeśli chcesz zignorować błędy, poprzedź polecenie znakiem -, np. -rm stary.log. I nie licz na to, że -b wpisze hasło za Ciebie — do automatyzacji potrzebujesz autoryzacji kluczem.
Powiązane komendy: ssh, scp, rsync, ftp, ssh-keygen.