SCP和SFTP有什么区别?


161

通常,我使用scp命令在* nixes上传输文件。

SFTP和SCP有什么区别?他们都不都在SSH上工作吗?

Answers:


98

简而言之,SCP只能用于传输文件,并且是非交互的(即,必须在命令行上指定所有内容)。SFTP更加精细,并且允许交互式命令执行诸如创建目录,删除目录和文件(当然,所有操作都取决于系统权限)等操作。


34
关于交互性:您所描述的区别在于OpenSSH中实现的特定SFTP / SCP客户端。与协议本身无关。完全有可能实现交互式SCP客户端或非交互式SFTP客户端。
Martin Prikryl 2014年

4
还有一件事:如果服务器仅允许通过line进行SFTP访问,则scp不起作用ForceCommand internal-sftp。我想PermitTTY no也可以阻止scp访问,但允许sftp访问,尽管我每次尝试输入密码时都会输入错误。但是这两件事不应该阻止sftp。资料来源:个人经验。
ecube

我可以假定任何SFTP服务器也能够接受SCP传输吗?
gus

@gus否,请参阅ecube的评论
Pere

104

来自维基百科

与仅允许文件传输的早期SCP协议相比,SFTP协议允许对远程文件进行一系列操作-更像是远程文件系统协议。与SCP客户端相比,SFTP客户端的其他功能包括恢复中断的传输,目录列表和远程文件删除。[1]由于这些原因,与GUI SCP客户端相比,实现GUI SFTP客户端相对简单。

尽管SCP和SFTP在文件传输期间使用相同的SSH加密,并且具有相同的常规开销,但是在传输文件时,SCP通常比SFTP快得多,尤其是在高延迟网络上。发生这种情况是因为SCP实施了一种更高效的传输算法,该算法不需要等待数据包确认。这样可以提高速度,但要以无法中断传输为代价,因此与SFTP不同,SCP传输必须在不终止会话的情况下才能取消。


18
“在传输文件时,SCP通常比SFTP快得多。”
米卡·波伦

3
“但是以无法中断传输为代价”。这是一个非常重要的权衡。
aaaaaa

aaaaaa,“不终止会话”,如果所有会话都用于复制文件,这没什么大不了的。如果要复制大量文件,客户端也可以等待单个文件复制完成。
Victor Sergienko

9

从纯命令行角度来看:

  • scp没有交互模式,也无法读取命令脚本,这意味着所有内容都必须写在命令行上。
  • sftp具有交互模式,可以从文件中读取命令。

这两个命令之间的另一个重要区别是,尽管sftp可以获取远程文件,但是sftp不能使用单个命令行将放置到远程位置,而scp可以同时执行这两个操作

sftp获取远程文件

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

scp获取远程文件

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

scp放置远程文件

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

2
放置文件:sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
gdw2

3

SSH小号 ecure SH ELL)是加密的网络协议,以允许远程登录和其它网络服务,以通过不安全的网络安全地进行操作。

区别: SFTP在交互模式(会话)下工作,而SCP在非交互模式下工作。使用SFTP,我们可以访问远程文件系统,即创建,删除和列出文件。

相似之处:这两个SCP(小号 ecure ç OPY P rotocol)和SFTP小号 SH ˚F ILE Ť转让(BOT)P rotocol)是网络协议,它支持网络上的主机之间的文件管理。两者都使用SSH。

更多


2

两种协议的大多数差异已经在其他答案中说过,更详细地说在https://unix.stackexchange.com/q/8707/19088中

根据curl文档,另一个区别是SCP协议不是很容易移植,通常只能在Unix系统之间工作。

顺便说一下,curl实现了这两种协议,并且与默认的OpenSSH SFTP客户端实现不同,它对于SFTP和SCP 都是非交互的。

请注意,还有FISH协议,该协议允许您通过SSH传输文件,而无需使用SCP或SFTP。据我所知,FISH不是很流行,目前仅在少数文件管理器(Midnight Commander以及一些基于KDE的文件管理器)和Lftp中实现


2
“根据curl的文档,另一个区别是SCP协议不是很容易移植,通常只能在Unix系统之间工作。” 具有讽刺意味的是,您的答案的这一部分是最受欢迎的SCP GUI称为WinSCP,并且-您已经猜到了-它是Windows程序。
布雷特

1
@brett最受欢迎的客户端可能是OpenSSH的scp,我想说它是高度部署的。WinSCP是一个SCP / SFTP / etc客户端,但如今主要用作(S)FTP客户端:“ 2003年6月发布了3.0版,引入了对SFTP协议SCP替代的支持。到主要协议。尽管如此,仍保留了公认的名称“ WinSCP”。” (摘自WinSCP的历史记录:winscp.net/eng/docs/project_history)
Pere,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.