Was ist der Unterschied zwischen SCP und SFTP?

161

Normalerweise benutze ich den scpBefehl, um Dateien auf * nixes zu übertragen.

Was ist der Unterschied zwischen SFTP und SCP? Arbeiten sie nicht beide an SSH?

nos
quelle

Antworten:

98

Kurz gesagt, SCP kann nur zum Übertragen von Dateien verwendet werden und ist nicht interaktiv (dh alles muss in der Befehlszeile angegeben werden). SFTP ist aufwändiger und ermöglicht es interaktiven Befehlen, Verzeichnisse zu erstellen, Verzeichnisse und Dateien zu löschen (alles unterliegt natürlich den Systemberechtigungen) usw.

Alex
quelle
34
In Bezug auf Interaktivität: Der von Ihnen beschriebene Unterschied betrifft bestimmte SFTP / SCP-Clients, wie sie in OpenSSH implementiert sind. Es geht nicht um die Protokolle selbst. Es ist durchaus möglich, einen interaktiven SCP-Client oder einen nicht interaktiven SFTP-Client zu implementieren.
Martin Prikryl
4
Eine weitere Sache: scp funktioniert nicht, wenn der Server nur den SFTP-Zugriff über die Leitung zulässt ForceCommand internal-sftp. Ich denke, PermitTTY noverhindert auch scp-Zugriff, ermöglicht aber sftp-Zugriff, obwohl ich mein Passwort jedes Mal, wenn ich es versuchte, falsch eingeben hätte können. Aber diese beiden Dinge sollten sftp nicht verhindern. Quelle: persönliche Erfahrung.
Ecube
Kann ich davon ausgehen, dass jeder SFTP-Server auch SCP-Übertragungen akzeptieren kann?
gus
@gus nein, siehe ecubes Kommentar
Pere
104

Aus Wikipedia :

Im Vergleich zum früheren SCP-Protokoll, das nur Dateiübertragungen zulässt, ermöglicht das SFTP-Protokoll eine Reihe von Vorgängen für Remote-Dateien - es ähnelt eher einem Remote-Dateisystemprotokoll. Die zusätzlichen Funktionen eines SFTP-Clients im Vergleich zu einem SCP-Client umfassen das Fortsetzen unterbrochener Übertragungen, Verzeichnislisten und das Entfernen von Remotedateien. [1] Aus diesen Gründen ist es relativ einfach, einen GUI-SFTP-Client im Vergleich zu einem GUI-SCP-Client zu implementieren.

und

Obwohl sowohl SCP als auch SFTP während der Dateiübertragung dieselbe SSH-Verschlüsselung mit demselben allgemeinen Overhead verwenden, ist SCP beim Übertragen von Dateien in der Regel viel schneller als SFTP, insbesondere in Netzwerken mit hoher Latenz. Dies geschieht, weil SCP einen effizienteren Übertragungsalgorithmus implementiert, bei dem nicht auf Paketbestätigungen gewartet werden muss. Dies führt zu einer höheren Geschwindigkeit, hat jedoch den Nachteil, dass die Übertragung nicht unterbrochen werden kann. Daher kann die SCP-Übertragung im Gegensatz zu SFTP nicht abgebrochen werden, ohne die Sitzung zu beenden.

Jarvin
quelle
18
"SCP ist beim Übertragen von Dateien normalerweise viel schneller als SFTP."
Micah Bolen
3
"Kommt aber auf die Kosten, einen Transfer nicht unterbrechen zu können". Das ist ein ziemlich wichtiger Kompromiss.
aaaaaa
aaaaaa, "ohne die Sitzung zu beenden", was keine große Sache ist, wenn in der Sitzung nur die Datei kopiert wird. Wenn Sie viele Dateien kopieren, kann der Client auch warten, bis eine einzelne Dateikopie abgeschlossen ist.
Victor Sergienko
9

Aus einer rein Befehlszeilenperspektive:

  • scp hat keinen interaktiven Modus und kann auch keine Befehlsskripte lesen. Das bedeutet, dass alles in die Befehlszeile geschrieben werden muss.
  • sftp hat einen interaktiven Modus und kann Befehle aus einer Datei lesen.

Ein weiterer wichtiger Unterschied zwischen den beiden Befehlen besteht darin, dass sftp eine lokale Datei nicht über eine einzige Befehlszeile an einen entfernten Ort verschieben kann , obwohl es eine entfernte Datei abrufen kann , während scp beides kann .

SFTP erhalten Remote-Datei

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

scp entfernte Datei holen

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

scp legte Remote-Datei

scp /path/to/local.file user@host:[/path/to/remote.file]
Stéphane Ch.
quelle
2
sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
Einreichen
3

SSH ( S ecure SH ell) ist ein kryptographisches Netzwerk - Protokoll zu ermöglichen Remote - Login und andere Netzwerk - Dienste sicher über ein unsicheres Netz zu betreiben.

Unterschiede: SFTP funktioniert im interaktiven Modus (Sitzung) und SCP funktioniert im nicht interaktiven Modus. Mit SFTP können wir auf das Remote-Dateisystem zugreifen, dh Dateien erstellen, löschen und auflisten.

Gemeinsamkeiten: Beide SCP ( S ecure C opy P rotokoll) und SFTP ( S SH F ile T ransfer P rotokoll) sind Netzwerkprotokolle, die zwischen Hosts in einem Netzwerk - Dateiverwaltung unterstützt. Beide verwenden SSH.

Mehr

Premraj
quelle
2

Die meisten Unterschiede der beiden Protokolle wurden bereits in anderen Antworten und ausführlicher in https://unix.stackexchange.com/q/8707/19088 erwähnt

Ein weiterer Unterschied besteht laut der Dokumentation von curl darin , dass das SCP-Protokoll nicht sehr portabel ist und normalerweise nur zwischen Unix-Systemen funktioniert.

Im Übrigen implementiert curl beide Protokolle und ist im Gegensatz zur Standardimplementierung des OpenSSH-SFTP-Clients für SFTP und SCP nicht interaktiv .

Beachten Sie, dass es auch das FISH- Protokoll gibt, mit dem Sie Dateien ohne SCP oder SFTP über SSH übertragen können. Soweit ich weiß, ist FISH nicht sehr beliebt und wird derzeit nur in wenigen Dateimanagern ( Midnight Commander und einige, die auf KDE basieren) und Lftp implementiert .

Pere
quelle
2
"Ein weiterer Unterschied besteht laut der Dokumentation von curl darin, dass das SCP-Protokoll nicht sehr portabel ist und normalerweise nur zwischen Unix-Systemen funktioniert." Die Ironie dieses Teils Ihrer Antwort ist, dass die beliebteste SCP-Benutzeroberfläche WinSCP heißt und - Sie haben es erraten - ein Windows-Programm ist.
Brett
1
@brett der beliebteste Client ist wahrscheinlich OpenSSHs scp, ich würde sagen, es ist hochgradig implementiert. WinSCP ist ein SCP / SFTP / etc-Client, wird jedoch heutzutage hauptsächlich als (S) FTP-Client verwendet: "Im Juni 2003 wurde Version 3.0 veröffentlicht, die die Unterstützung der Alternative zu SCP, dem SFTP-Protokoll, einführte. Im Laufe der Zeit entwickelte sich diese aus der Alternative heraus Trotzdem wurde der bekannte Name "WinSCP" beibehalten. " (aus der Geschichte von WinSCP: winscp.net/eng/docs/project_history)
Pere