Odpowiedzi:
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.
ForceCommand internal-sftp
. Myślę, że PermitTTY no
ró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.
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.
Z czysto linii poleceń:
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 user@host:/path/to/remote.file [/path/to/local.file]
scp user@host:/path/to/remote.file [/path/to/local.file]
scp /path/to/local.file user@host:[/path/to/remote.file]
sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
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ę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 .