Jaka jest różnica między SCP a SFTP?

161

Zwykle używam tego scppolecenia do przesyłania plików na * nixes.

Jaka jest różnica między SFTP a SCP? Czy oba nie działają na SSH?

nos
źródło

Odpowiedzi:

98

W skrócie, SCP może być używany tylko do przesyłania plików i nie jest interaktywny (tzn. Wszystko musi zostać określone w wierszu poleceń). SFTP jest bardziej rozbudowany i pozwala interaktywnym poleceniom wykonywać takie czynności, jak tworzenie katalogów, usuwanie katalogów i plików (oczywiście wszystko to zależy od uprawnień systemowych) itp.

Alex
źródło
34
Odnośnie interaktywności: Różnica, którą opisujesz, dotyczy konkretnych klientów SFTP / SCP zaimplementowanych w OpenSSH. To nic o samych protokołach. Jest całkowicie możliwe wdrożenie interaktywnego klienta SCP lub nieinteraktywnego klienta SFTP.
Martin Prikryl,
4
Jeszcze jedno: scp nie działa, jeśli serwer zezwala na dostęp SFTP tylko przez linię ForceCommand internal-sftp. Myślę, że PermitTTY norównież uniemożliwia dostęp do scp, ale umożliwia dostęp do sftp, chociaż mogłem po prostu pomylić moje hasło przy każdej próbie. Ale te dwie rzeczy nie powinny uniemożliwiać sftp. Źródło: osobiste doświadczenia.
ecube,
Czy mogę założyć, że dowolny serwer SFTP jest w stanie akceptować transfery SCP?
gus
@ gus nie, patrz komentarz ecube
Pere
104

Z Wikipedii :

W porównaniu do wcześniejszego protokołu SCP, który pozwala tylko na przesyłanie plików, protokół SFTP pozwala na szereg operacji na zdalnych plikach - bardziej przypomina protokół zdalnego systemu plików. Dodatkowe możliwości klienta SFTP w porównaniu do klienta SCP obejmują wznawianie przerwanych transferów, list katalogów i zdalne usuwanie plików. [1] Z tych powodów względnie proste jest wdrożenie klienta GUI SFTP w porównaniu z klientem GUI SCP.

i

Chociaż zarówno SCP, jak i SFTP używają tego samego szyfrowania SSH podczas przesyłania plików z tym samym ogólnym poziomem narzutu, SCP jest zwykle znacznie szybszy niż SFTP przy przesyłaniu plików, szczególnie w sieciach o dużym opóźnieniu. Dzieje się tak, ponieważ SCP implementuje wydajniejszy algorytm przesyłania, który nie wymaga oczekiwania na potwierdzenia pakietu. Prowadzi to do większej prędkości, ale odbywa się to kosztem niemożności przerwania transferu, więc w przeciwieństwie do SFTP, transfer SCP nie może zostać anulowany bez zakończenia sesji.

Jarvin
źródło
18
„Podczas przesyłania plików SCP jest zwykle znacznie szybszy niż SFTP”.
Micah Bolen
3
„Ale dzieje się to kosztem niemożności przerwania transferu”. To dość ważny kompromis.
aaaaaa
aaaaaa, „bez kończenia sesji”, co nie jest wielkim problemem, jeśli cała sesja jest przeznaczona do kopiowania pliku. Jeśli kopiujesz wiele plików, klient może również poczekać na zakończenie kopiowania pojedynczego pliku.
Victor Sergienko
9

Z czysto linii poleceń:

  • scp nie ma trybu interaktywnego ani nie może czytać skryptów poleceń, co oznacza, że ​​wszystko musi być zapisane w wierszu poleceń.
  • sftp ma tryb interaktywny i może odczytywać polecenia z pliku.

Inną ważną różnicą między tymi 2 poleceniami jest to, że sftp nie może umieścić pliku lokalnego w zdalnej lokalizacji za pomocą pojedynczego wiersza poleceń , chociaż może uzyskać plik zdalny, podczas gdy scp może wykonać oba te operacje .

sftp pobierz plik zdalny

sftp user@host:/path/to/remote.file [/path/to/local.file]

scp pobierz plik zdalny

scp user@host:/path/to/remote.file [/path/to/local.file]

scp umieści plik zdalny

scp /path/to/local.file user@host:[/path/to/remote.file]
Stéphane Ch.
źródło
2
Umieszczanie pliku:sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
gdw2
3

SSH ( S ecure SH ell) to kryptograficzny protokół sieciowy, który pozwala na bezpieczne logowanie zdalne i inne usługi sieciowe w niezabezpieczonej sieci.

Różnice: SFTP działa w trybie interaktywnym (sesja), a SCP działa w trybie nieinteraktywnym. Za pomocą SFTP możemy uzyskać dostęp do zdalnego systemu plików, tj. Tworzenie, usuwanie i wyświetlanie plików.

Podobieństwa: Zarówno SCP ( S ecure C opy P rotocol) i SFTP ( S SH F Ile T ransfer P rotocol) są protokoły sieciowe, które obsługuje zarządzanie plikami pomiędzy hostami w sieci. Oba używają SSH.

więcej

Premraj
źródło
2

Większość różnic między tymi dwoma protokołami została już powiedziana w innych odpowiedziach, a bardziej szczegółowo w https://unix.stackexchange.com/q/8707/19088

Inna różnica, zgodnie z dokumentacją curl , polega na tym, że protokół SCP nie jest zbyt przenośny i zwykle działa tylko między systemami uniksowymi.

Nawiasem mówiąc, curl implementuje oba protokoły iw przeciwieństwie do domyślnej implementacji klienta OpenSSH SFTP, nie jest interaktywny zarówno dla SFTP, jak i SCP.

I pamiętaj, że istnieje również protokół FISH , który pozwala przesyłać pliki przez SSH bez potrzeby SCP lub SFTP. O ile wiem, FISH nie jest zbyt popularny, obecnie jest wdrażany tylko w kilku menedżerach plików ( Midnight Commander i niektórych opartych na KDE) oraz Lftp .

Pere
źródło
2
„Inna różnica, zgodnie z dokumentacją curl, polega na tym, że protokół SCP nie jest zbyt przenośny i zwykle działa tylko między systemami uniksowymi.” Ironią tej części twojej odpowiedzi jest to, że najpopularniejszy GUI SCP nazywa się WinSCP, a - jak się domyślacie - jest to program Windows.
brett
1
@brett najpopularniejszym klientem jest prawdopodobnie scp OpenSSH, powiedziałbym, że jest wysoce wdrożony. WinSCP jest klientem SCP / SFTP / etc, ale obecnie jest najczęściej używany jako klient (S) FTP: „W czerwcu 2003 roku została wydana wersja 3.0, wprowadzająca obsługę alternatywy dla SCP, protokołu SFTP. Z czasem ewoluowała z alternatywnej do protokołu podstawowego. Mimo to utrwalona została nazwa „WinSCP”. ” (z Historii WinSCP: winscp.net/eng/docs/project_history)
Pere