安全复制

科技工作者之家 2020-11-17

安全复制(英语:Secure copy,缩写SCP)是指在本地主机与远程主机或者两台远程主机之间基于Secure Shell(SSH)协议安全地传输计算机文件。“SCP”通常指安全复制协议或者程序本身。

安全复制协议SCP是一种基于BSDRCP协议的网络传输协议,支持同一个网络上主机之间传输文件。SCP使用Secure Shell(SSH)完成数据传输,并使用同时用它进行身份认证,从而确保数据传输时的真实性和保密性。客户端可以向服务器发送(上传)文件,可选包含其基本属性(权限、时间戳)。客户端也可以请求(下载)一个服务器的文件或目录。SCP默认通过TCP端口22运行。如同RCP,没有RFC定义该协议的细节。1

功能正常来说,一个客户端发起到远程主机的SSH连接,并请求在远程服务器上启动一个SCP进程。远程SCP进程可以以两种模式之一操作:

源模式,读取文件(通常从磁盘)并将其发送回客户端。

槽(sink)模式,接收客户端发送的文件,并将它们写入到远程主机(通常到磁盘)。

对大多数SCP客户端来说,源模式通常使用-f标识(意为from)触发,而槽模式用-t(意为to)触发。这些标志是在内部使用,没有在SCP源代码之外留有文档。1

远程到远程模式在过去,远程到远程的安全复制中,SCP客户端打开一个到源主机的SSH连接,并请求它打开到目的地的SCP连接。(远程到远程模式不支持打开两个SCP连接,并使用始发客户端作为一个中介)。应格外注意的是,当在密码或键盘交互认证模式下操作时,SCP不能用于远程的从源复制到目的地,因为这将向源显示目的地服务器的认证凭证。但是,使用基于密钥或GSSAPI的方法可以规避此点,因为不需要用户输入。

最近以来,远程到远程模式支持通过发起转移的客户端路由流量,即使它是转移的第三方。这种方法下,授权凭据必须仅驻留在发起客户端上,即第三方。1

有关shell配置文件的问题SCP不希望与ssh登录的shell用文本通信。这是由于文本传输的ssh配置文件(例如.bashrc文件中的echo "Welcome")会被解释为一条错误消息,并且一个空行(echo "")将导致scp死锁为等待错误消息完成。1

安全复制(远程文件复制程序)SCP程序是将SCP协议实现为服务守护程序或客户端的软件工具。它是执行安全复制的程序。SCP服务器程序通常与SCP客户端是相同的程序。SCP服务器软件可以普通机器或防火墙配置为仅接受22端口上的SCP流量的极高安全标准的机器上运行。

使用最广泛的SCP程序可能是命令行界面的scp程序,这在大多数SSH实现中提供。scp程序是rcp命令的安全模拟。scp程序是所有想提供SCP服务的SSH服务器的必备,scp功能也作为SCP服务器。

部分SSH实现提供scp2程序,这使用SFTP协议而非SCP,但提供与相同的命令行界面scp。scp此时通常符号链接至scp2。

通常来说,scp程序的语法类似cp(copy)的语法。2

复制文件到主机:

scp SourceFile user@host:directory/TargetFile从主机复制文件:

scp user@host:directory/SourceFile TargetFilescp -r scp user@host:directory/SourceFolder TargetFolder注意,如果远程主机使用非默认端口22,可以在命令中指定。例如,从主机复制一个文件。

scp -P 2222 user@host:directory/SourceFile TargetFile由于安全复制协议仅实现文件传输,GUI的SCP客户端很少,因为实现它需要额外的功能(至少要有目录列出)。例如,WinSCP默认为SFTP协议。即使在SCP模式下操作,WinSCP等客户端通常也不是纯粹的SCP客户端,因为他们必须用其他手段实现额外的功能(例如ls命令)。这反过来带来了平台依赖性问题。

SFTP客户端是更全面的通过SSH管理文件的工具。2

本词条内容贡献者为:

宋春霖 - 副教授 - 江南大学

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。