Qual è la differenza tra SCP e SFTP?


162

Di solito, utilizzo il scpcomando per trasferire file su * nixes.

Qual è la differenza tra SFTP e SCP? Entrambi non funzionano su SSH?

Risposte:


98

In poche parole, SCP può essere utilizzato solo per il trasferimento di file ed è non interattivo (vale a dire, tutto deve essere specificato sulla riga di comando). SFTP è più elaborato e consente ai comandi interattivi di eseguire operazioni come la creazione di directory, l'eliminazione di directory e file (tutti soggetti a autorizzazioni di sistema, ovviamente), ecc.


34
Per quanto riguarda l'interattività: la differenza che descrivi riguarda specifici client SFTP / SCP implementati in OpenSSH. Non riguarda i protocolli stessi. È perfettamente possibile implementare client SCP interattivi o client SFTP non interattivi.
Martin Prikryl,

4
Ancora una cosa: scp non funziona se il server consente l'accesso SFTP solo tramite la linea ForceCommand internal-sftp. Penso PermitTTY noanche che impedisca l'accesso a scp ma permetta l'accesso a sftp, anche se avrei potuto sbagliare a digitare la mia password ogni volta che ho provato. Ma queste due cose non dovrebbero impedire sftp. Fonte: esperienza personale.
ecube,

Posso presumere che qualsiasi server SFTP sia anche in grado di accettare trasferimenti SCP?
gus

@gus no, vedi il commento di ecube
Pere

104

Da Wikipedia :

Rispetto al precedente protocollo SCP, che consente solo trasferimenti di file, il protocollo SFTP consente una serie di operazioni sui file remoti: è più simile a un protocollo di file system remoto. Le funzionalità extra di un client SFTP rispetto a un client SCP includono la ripresa di trasferimenti interrotti, elenchi di directory e rimozione di file remoti. [1] Per questi motivi è relativamente semplice implementare un client SFTP della GUI rispetto a un client SCP della GUI.

e

Sebbene sia SCP che SFTP utilizzino la stessa crittografia SSH durante il trasferimento di file con lo stesso livello generale di sovraccarico, SCP è di solito molto più veloce di SFTP nel trasferimento di file, specialmente su reti ad alta latenza. Ciò accade perché SCP implementa un algoritmo di trasferimento più efficiente, che non richiede l'attesa di conferme di pacchetti. Questo porta a una maggiore velocità ma comporta il costo di non poter interrompere un trasferimento, quindi a differenza di SFTP, il trasferimento SCP non può essere annullato senza terminare la sessione.


18
"SCP è in genere molto più veloce di SFTP nel trasferimento di file."
Micah Bolen,

3
"Ma arriva a spese di non poter interrompere un trasferimento". Questo è un compromesso piuttosto importante.
aaaaaa,

aaaaaa, "senza terminare la sessione" che non è un grosso problema se tutta la sessione è per la copia del file. Se si copiano molti file, il client può anche attendere il completamento di una copia di un singolo file.
Victor Sergienko,

9

Da una prospettiva puramente a riga di comando:

  • scp non ha una modalità interattiva né può leggere script di comandi, ciò significa che tutto deve essere scritto sulla riga di comando.
  • sftp ha una modalità interattiva e può leggere comandi da un file.

Un'altra differenza importante tra i 2 comandi è che sftp non può mettere un file locale in una posizione remota usando una singola riga di comando , sebbene possa ottenere un file remoto, mentre scp può fare entrambe le cose .

sftp ottiene il file remoto

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

scp ottiene il file remoto

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

scp put file remoto

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

2
Mettere un file:sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
gdw2 il

3

SSH ( S ecure SH ell) è un protocollo di rete crittografica che consente l'accesso remoto e altri servizi di rete per operare in modo sicuro su una rete non protetta.

Differenze: SFTP funziona in modalità interattiva (sessione) e SCP funziona in modalità non interattiva. Usando SFTP possiamo accedere al file system remoto, ovvero creare, eliminare ed elencare i file.

Somiglianze: Entrambi SCP ( S ecure C opia P ROTOCOLLO) e SFTP ( S SH F ile T ransfer P ROTOCOLLO) sono i protocolli di rete, che supporta la gestione dei file tra host di una rete. Entrambi usano SSH.

Di Più


2

La maggior parte delle differenze tra i due protocolli sono già state dette in altre risposte, e in modo più dettagliato in https://unix.stackexchange.com/q/8707/19088

Un'altra differenza, secondo la documentazione di curl , è che il protocollo SCP non è molto portatile e di solito funziona solo tra i sistemi Unix.

A proposito, curl implementa entrambi i protocolli e, diversamente dall'implementazione client SFTP OpenSSH predefinita, non è interattivo sia per SFTP che per SCP.

E nota che esiste anche il protocollo FISH , che ti consente di trasferire file tramite SSH senza la necessità di SCP o SFTP. Per quanto ne so, FISH non è molto popolare, attualmente implementato in pochi file manager ( Midnight Commander e alcuni basati su KDE) e Lftp .


2
"Un'altra differenza, secondo la documentazione di curl, è che il protocollo SCP non è molto portatile e di solito funziona solo tra sistemi Unix." L'ironia di questa parte della tua risposta è che la GUI SCP più popolare si chiama WinSCP e - hai indovinato - è un programma Windows.
brett,

1
@brett il client più popolare è probabilmente lo scp di OpenSSH, direi che è altamente distribuito. WinSCP è un client SCP / SFTP / etc ma oggigiorno viene principalmente utilizzato come client (S) FTP: "Nel giugno 2003 è stata rilasciata la versione 3.0, introducendo il supporto per l'alternativa a SCP, il protocollo SFTP. Nel tempo si è evoluto dall'alternativa al protocollo principale. Nonostante ciò, è stato preservato il nome consolidato "WinSCP". (da History of WinSCP: winscp.net/ita/docs/project_history)
Pere,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.