命令行手册

Man » scp 在线手册 - `scp` 手册页的详细在线文档

🌍
scp — OpenSSH 安全文件复制

概要

scp [-346ABCOpqRrsTv] [-c cipher] [-D sftp_server_path] [-F ssh_config] [-i identity_file]
[-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] [-X sftp_option] source
... target

描述

scp 在网络上的主机之间复制文件。

scp 使用 ssh(1) 连接上的 SFTP 协议进行数据传输,并提供与登录会话相同的身份验证和安全性。

scp 会在需要身份验证时提示输入密码或密码短语。

源和目标可以指定为本地路径名、具有可选路径形式的远程主机 [user@]host:[path],或 scp://[user@]host[:port][/path] 形式的 URI。可以使用绝对路径或相对路径来明确本地文件名,以避免 scp 将包含“:”的文件名视为主机说明符。

当在两个远程主机之间复制时,如果使用 URI 格式,则在使用 -R 选项时,目标上不能指定端口。

选项如下:

-3  在两个远程主机之间进行复制时,数据会通过本地主机传输。这是默认模式,但请参阅 -R 选项,了解如何在两个远程主机之间直接复制数据。

请注意,在使用旧版 SCP 协议(通过 -O 标志)时,此选项为第二个主机选择批处理模式,因为 scp 无法为两个主机都提示输入密码或密码短语。

-4  强制 scp 仅使用 IPv4 地址。

-6  强制 scp 仅使用 IPv6 地址。

-A  允许将 ssh-agent(1) 转发到远程系统。默认情况下,不转发身份验证代理。

-B  选择批处理模式(防止提示输入密码或密码短语)。

-C  压缩启用。将 -C 标志传递给 [ssh]({filename}../../ssh)(1),以启用压缩。

-c cipher

选择用于加密数据传输的密码。此选项直接传递给 ssh(1)。

-D sftp_server_path

直接连接到本地 SFTP 服务器程序,而不是通过 ssh(1) 连接到远程服务器。此选项可能对调试客户端和服务器很有用。

-F ssh_config

指定用于 ssh 的替代的每用户配置文件。此选项直接传递给 ssh(1)。

-i identity_file

选择要从中读取用于公共密钥身份验证的身份(私钥)的文件。此选项直接传递给 ssh(1)。

-J destination

通过首先建立到 destination 描述的跳转主机的 scp 连接,然后从那里建立 TCP 转发到最终目标来连接到目标主机。可以指定多个跳转,用逗号分隔。这是指定 ProxyJump 配置指令的快捷方式。此选项直接传递给 ssh(1)。

-l limit

限制使用的带宽,以 Kbit/s 为单位。

-O  使用旧版 SCP 协议进行文件传输,而不是 SFTP 协议。强制使用 SCP 协议可能是必需的,因为某些服务器未实现 SFTP,或者为了与特定文件名通配符模式的旧版本兼容,以及为了扩展旧 SFTP 服务器中的以“~”前缀开头的路径。

-o ssh_option

可用于以 ssh_config(5) 中使用的格式将选项传递给 ssh。这对于指定没有单独的 scp 命令行标志的选项很有用。有关下面列出的选项及其可能值的完整详细信息,请参阅 ssh_config(5)。

AddKeysToAgent
AddressFamily
BatchMode
BindAddress
BindInterface
CASignatureAlgorithms
CanonicalDomains
CanonicalizeFallbackLocal
CanonicalizeHostname
CanonicalizeMaxDots
CanonicalizePermittedCNAMEs
CertificateFile
ChannelTimeout
CheckHostIP
Ciphers
ClearAllForwardings
Compression
ConnectTimeout
ConnectionAttempts
ControlMaster
ControlPath
ControlPersist
DynamicForward
EnableEscapeCommandline
EnableSSHKeysign
EscapeChar
ExitOnForwardFailure
FingerprintHash
ForkAfterAuthentication
ForwardAgent
ForwardX11
ForwardX11Timeout
ForwardX11Trusted
GSSAPIAuthentication
GSSAPIDelegateCredentials
GatewayPorts
GlobalKnownHostsFile
HashKnownHosts
Host
HostKeyAlgorithms
HostKeyAlias
HostbasedAcceptedAlgorithms
HostbasedAuthentication
Hostname
IPQoS
IdentitiesOnly
IdentityAgent
IdentityFile
IgnoreUnknown
Include
KbdInteractiveAuthentication
KbdInteractiveDevices
KexAlgorithms
KnownHostsCommand
LocalCommand
LocalForward
LogLevel
LogVerbose
MACs
NoHostAuthenticationForLocalhost
NumberOfPasswordPrompts
ObscureKeystrokeTiming
PKCS11Provider
PasswordAuthentication
PermitLocalCommand
PermitRemoteOpen
Port
PreferredAuthentications
ProxyCommand
ProxyJump
ProxyUseFdpass
PubkeyAcceptedAlgorithms
PubkeyAuthentication
RekeyLimit
RemoteCommand
RemoteForward
RequestTTY
RequiredRSASize
RevokedHostKeys
SecurityKeyProvider
SendEnv
ServerAliveCountMax
ServerAliveInterval
SessionType
SetEnv
StdinNull
StreamLocalBindMask
StreamLocalBindUnlink
StrictHostKeyChecking
SyslogFacility
TCPKeepAlive
Tag
Tunnel
TunnelDevice
UpdateHostKeys
User
UserKnownHostsFile
VerifyHostKeyDNS
VisualHostKey
XAuthLocation

-P port

指定连接到远程主机上的端口。请注意,此选项以大写“P”书写,因为 -p 已经用于保留文件的修改时间和模式位。

-p  保留源文件的修改时间、访问时间和文件模式位。

-q  静默模式:禁用进度条以及来自 [ssh]({filename}../../ssh)(1) 的警告和诊断消息。

-R  默认情况下,在两个远程主机之间进行复制时,数据会通过本地主机传输。此选项改为通过连接到源主机并在该主机上执行 scp 来在两个远程主机之间进行复制。这要求在源主机上运行的 scp 能够在使用密码而无需输入密码的情况下对目标主机进行身份验证。

-r  递归复制整个目录。请注意,scp 遵循树遍历中遇到的符号链接。

-S program

用于加密连接的程序的名称。该程序必须了解 ssh(1) 选项。

-T  禁用严格的文件名检查。默认情况下,当从远程主机复制文件到本地目录时,scp 会检查接收到的文件名是否与命令行中请求的文件名匹配,以防止远程端发送意外或不需要的文件。由于各种操作系统和 shell 对文件名通配符的解释方式不同,这些检查可能会导致想要的文件被拒绝。此选项会禁用这些检查,但代价是完全信任服务器不会发送意外的文件名。

-v  详细模式。导致 scp 和 [ssh]({filename}../../ssh)(1) 打印有关其进度的调试消息。这对于调试连接、身份验证和配置问题很有帮助。

-X sftp_option

指定一个用于控制 SFTP 读取/写入操作期间使用的最大缓冲区大小的选项。默认情况下,使用 32KB 的缓冲区。

-X sftp_option

指定一个用于控制下载或上传期间单个 SFTP 读取/写入操作期间使用的最大缓冲区大小的选项。默认情况下,使用 32KB 的缓冲区。

退出状态

scp 实用程序在成功时返回 0,出错时返回 >0。

参见

sftp(1), ssh(1), ssh-add(1), ssh-agent(1), ssh-keygen(1), ssh_config(5), sftp-server(8), sshd(8)

历史

scp 基于加州大学董事会 BSD 源代码中的 rcp 程序。

从 OpenSSH 9.0 开始,scp 默认使用 SFTP 协议进行传输。

作者

Timo Rinne <_> Tatu Ylonen <_>

注意事项

旧版 SCP 协议(通过 -O 标志选择)需要执行远程用户的 shell 才能执行 glob(3) 模式匹配。 这需要仔细引用任何对远程 shell 具有特殊含义的字符,例如引号字符。