安全复制(英语:Secure copy,缩写SCP)是指在本地
主机与远程主机或者两台远程主机之间基于
Secure Shell(SSH)协议安全地传输
计算机文件。“SCP”通常指安全复制协议或者程序本身。
SCP是一种基于
BSDRCP协议的
网络传输协议,支持同一个网络上主机之间传输文件。SCP使用
Secure Shell(SSH)完成数据传输,并使用同时用它进行身份认证,从而确保数据传输时的
真实性和
保密性。客户端可以向服务器发送(上传)文件,可选包含其基本属性(权限、时间戳)。客户端也可以请求(下载)一个服务器的文件或目录。SCP默认通过
TCP端口22运行。如同RCP,没有
RFC定义该协议的细节。
正常来说,一个客户端发起到远程主机的SSH连接,并请求在远程服务器上启动一个SCP
进程。远程SCP进程可以以两种模式之一操作:
在过去,远程到远程的安全复制中,SCP客户端打开一个到源主机的SSH连接,并请求它打开到目的地的SCP连接。(远程到远程模式不支持打开两个SCP连接,并使用始发客户端作为一个中介)。应格外注意的是,当在密码或键盘交互认证模式下操作时,SCP不能用于远程的从源复制到目的地,因为这将向源显示目的地服务器的认证凭证。但是,使用基于密钥或
GSSAPI的方法可以规避此点,因为不需要用户输入。
SCP程序是将SCP协议实现为服务守护程序或客户端的软件工具。它是执行安全复制的程序。SCP服务器程序通常与SCP客户端是相同的程序。SCP服务器软件可以普通机器或
防火墙配置为仅接受22端口上的SCP流量的极高安全标准的机器上运行。
使用最广泛的SCP程序可能是
命令行界面的scp程序,这在大多数SSH实现中提供。scp程序是rcp命令的安全模拟。scp程序是所有想提供SCP服务的SSH服务器的必备,scp功能也作为SCP服务器。
由于安全复制协议仅实现文件传输,
GUI的SCP客户端很少,因为实现它需要额外的功能(至少要有
目录列出)。例如,
WinSCP默认为SFTP协议。即使在SCP模式下操作,WinSCP等客户端通常也不是纯粹的SCP客户端,因为他们必须用其他手段实现额外的功能(例如ls命令)。这反过来带来了平台依赖性问题。