Risposte:
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.
ForceCommand internal-sftp
. Penso PermitTTY no
anche 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.
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.
Da una prospettiva puramente a riga di comando:
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 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) è 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.
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 .