scp命令
命令用途
在 Linux 系统中,scp(Secure Copy)命令用于通过 SSH 协议在网络上安全地复制文件。该命令利用 SFTP 协议进行数据传输,确保了数据传输过程中的安全性。使用 scp,可以将文件从本地复制到远程主机,或者将远程主机的文件复制到本地,甚至在两台远程主机之间传输文件。
常用用法示例
拷贝本地文件到远程主机
假设我们要将本地文件 /home/user/file.txt 复制到远程主机 192.168.1.100 的 /home/remoteuser/ 目录中,命令如下:
1 | scp /home/user/file.txt remoteuser@192.168.1.100:/home/remoteuser/ |
执行该命令后,如果是第一次连接到该主机,系统会提示确认远程主机的身份,并要求输入 remoteuser 用户的密码。假设密码正确,命令执行的输出如下:
1 | file.txt 100% 12KB 12.3MB/s 00:00 |
解释:
file.txt 是正在复制的文件。
100% 表示文件复制完成。
12KB 是文件大小。
12.3MB/s 是文件复制的传输速度。
00:00 表示复制文件所花费的时间。
常用参数选项
- -r:递归复制整个目录。如果要复制目录及其内容,需要使用此选项。例如,复制本地目录 /home/user/dir 到远程主机:
1 | scp -r /home/user/dir remoteuser@192.168.1.100:/home/remoteuser/ |
- -P port:指定远程主机的 SSH 端口(注意:大写 P)。如果远程主机使用非默认的 SSH 端口(如 2222),可以使用该选项:
1 | scp -P 2222 /home/user/file.txt remoteuser@192.168.1.100:/home/remoteuser/ |
- -i identity_file:指定用于身份验证的私钥文件。如果你使用的是 SSH 密钥而非密码进行身份验证,可以指定该选项:
1 | scp -i /path/to/private_key /home/user/file.txt remoteuser@192.168.1.100:/home/remoteuser/ |
- -v:详细模式,显示调试信息,适合调试连接问题。例如,执行如下命令:
1 | scp -v /home/user/file.txt remoteuser@192.168.1.100:/home/remoteuser/ |
输出将包含更多调试信息,有助于检查网络连接和身份验证过程。
- -C:启用压缩。传输大文件时,可以使用此选项以提高传输效率:
1 | scp -C /home/user/largefile.zip remoteuser@192.168.1.100:/home/remoteuser/ |
- -q:静默模式,禁用进度条和诊断信息。这对于不需要显示详细信息的场景非常有用:
1 | scp -q /home/user/file.txt remoteuser@192.168.1.100:/home/remoteuser/ |
原厂文档
NAME
scp — OpenSSH secure file copy
SYNOPSIS
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
DESCRIPTION
scp copies files between hosts on a network.
scp uses the SFTP protocol over a ssh(1) connection for data
transfer, and uses the same authentication and provides the same
security as a login session.
scp will ask for passwords or passphrases if they are needed for
authentication.
The source and target may be specified as a local pathname, a
remote host with optional path in the form [user@]host:[path], or
a URI in the form scp://[user@]host[:port][/path]. Local file
names can be made explicit using absolute or relative pathnames to
avoid scp treating file names containing ‘:’ as host specifiers.
When copying between two remote hosts, if the URI format is used,
a port cannot be specified on the target if the -R option is used.
The options are as follows:
-3 Copies between two remote hosts are transferred through
the local host. Without this option the data is copied
directly between the two remote hosts. Note that, when
using the legacy SCP protocol (via the -O flag), this
option selects batch mode for the second host as scp
cannot ask for passwords or passphrases for both hosts.
This mode is the default.
-4 Forces scp to use IPv4 addresses only.
-6 Forces scp to use IPv6 addresses only.
-A Allows forwarding of ssh-agent(1) to the remote system.
The default is not to forward an authentication agent.
-B Selects batch mode (prevents asking for passwords or
passphrases).
-C Compression enable. Passes the -C flag to ssh(1) to
enable compression.
-c cipher
Selects the cipher to use for encrypting the data
transfer. This option is directly passed to ssh(1).
-D sftp_server_path
Connect directly to a local SFTP server program rather
than a remote one via ssh(1). This option may be useful
in debugging the client and server.
-F ssh_config
Specifies an alternative per-user configuration file for
ssh. This option is directly passed to ssh(1).
-i identity_file
Selects the file from which the identity (private key) for
public key authentication is read. This option is
directly passed to ssh(1).
-J destination
Connect to the target host by first making an scp
connection to the jump host described by destination and
then establishing a TCP forwarding to the ultimate
destination from there. Multiple jump hops may be
specified separated by comma characters. This is a
shortcut to specify a ProxyJump configuration directive.
This option is directly passed to ssh(1).
-l limit
Limits the used bandwidth, specified in Kbit/s.
-O Use the legacy SCP protocol for file transfers instead of
the SFTP protocol. Forcing the use of the SCP protocol
may be necessary for servers that do not implement SFTP,
for backwards-compatibility for particular filename
wildcard patterns and for expanding paths with a ‘~’
prefix for older SFTP servers.
-o ssh_option
Can be used to pass options to ssh in the format used in
ssh_config(5). This is useful for specifying options for
which there is no separate scp command-line flag. For
full details of the options listed below, and their
possible values, see ssh_config(5).
AddressFamily
BatchMode
BindAddress
BindInterface
CanonicalDomains
CanonicalizeFallbackLocal
CanonicalizeHostname
CanonicalizeMaxDots
CanonicalizePermittedCNAMEs
CASignatureAlgorithms
CertificateFile
CheckHostIP
Ciphers
Compression
ConnectionAttempts
ConnectTimeout
ControlMaster
ControlPath
ControlPersist
GlobalKnownHostsFile
GSSAPIAuthentication
GSSAPIDelegateCredentials
HashKnownHosts
Host
HostbasedAcceptedAlgorithms
HostbasedAuthentication
HostKeyAlgorithms
HostKeyAlias
Hostname
IdentitiesOnly
IdentityAgent
IdentityFile
IPQoS
KbdInteractiveAuthentication
KbdInteractiveDevices
KexAlgorithms
KnownHostsCommand
LogLevel
MACs
NoHostAuthenticationForLocalhost
NumberOfPasswordPrompts
PasswordAuthentication
PKCS11Provider
Port
PreferredAuthentications
ProxyCommand
ProxyJump
PubkeyAcceptedAlgorithms
PubkeyAuthentication
RekeyLimit
RequiredRSASize
SendEnv
ServerAliveInterval
ServerAliveCountMax
SetEnv
StrictHostKeyChecking
TCPKeepAlive
UpdateHostKeys
User
UserKnownHostsFile
VerifyHostKeyDNS
-P port
Specifies the port to connect to on the remote host. Note
that this option is written with a capital ‘P’, because -p
is already reserved for preserving the times and mode bits
of the file.
-p Preserves modification times, access times, and file mode
bits from the source file.
-q Quiet mode: disables the progress meter as well as warning
and diagnostic messages from ssh(1).
-R Copies between two remote hosts are performed by
connecting to the origin host and executing scp there.
This requires that scp running on the origin host can
authenticate to the destination host without requiring a
password.
-r Recursively copy entire directories. Note that scp
follows symbolic links encountered in the tree traversal.
-S program
Name of program to use for the encrypted connection. The
program must understand ssh(1) options.
-T Disable strict filename checking. By default when copying
files from a remote host to a local directory scp checks
that the received filenames match those requested on the
command-line to prevent the remote end from sending
unexpected or unwanted files. Because of differences in
how various operating systems and shells interpret
filename wildcards, these checks may cause wanted files to
be rejected. This option disables these checks at the
expense of fully trusting that the server will not send
unexpected filenames.
-v Verbose mode. Causes scp and ssh(1) to print debugging
messages about their progress. This is helpful in
debugging connection, authentication, and configuration
problems.
-X sftp_option
Specify an option that controls aspects of SFTP protocol
behaviour. The valid options are:
nrequests=value
Controls how many concurrent SFTP read or write
requests may be in progress at any point in time
during a download or upload. By default 64
requests may be active concurrently.
buffer=value
Controls the maximum buffer size for a single SFTP
read/write operation used during download or
upload. By default a 32KB buffer is used.
EXIT STATUS
The scp utility exits 0 on success, and >0 if an error occurs.
SEE ALSO
sftp(1), ssh(1), ssh-add(1), ssh-agent(1), ssh-keygen(1),
ssh_config(5), sftp-server(8), sshd(8)
HISTORY
scp is based on the rcp program in BSD source code from the
Regents of the University of California.
Since OpenSSH 9.0, scp has used the SFTP protocol for transfers by
default.
AUTHORS
Timo Rinne <tri@iki.fi> Tatu Ylonen <ylo@cs.hut.fi>
CAVEATS
The legacy SCP protocol (selected by the -O flag) requires
execution of the remote user's shell to perform glob(3) pattern
matching. This requires careful quoting of any characters that
have special meaning to the remote shell, such as quote
characters.
COLOPHON
This page is part of the openssh (Portable OpenSSH) project.
Information about the project can be found at
http://www.openssh.com/portable.html. If you have a bug report
for this manual page, see ⟨http://www.openssh.com/report.html⟩.
This page was obtained from the tarball openssh-9.9p1.tar.gz
fetched from
⟨http://ftp.eu.openbsd.org/pub/OpenBSD/OpenSSH/portable/⟩ on
2024-02-02. If you discover any rendering problems in this HTML
version of the page, or you believe there is a better or more up-
to-date source for the page, or you have corrections or
improvements to the information in this COLOPHON (which is not
part of the original manual page), send a mail to
man-pages@man7.org
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Chan Revival Sky!
评论