在 Linux 下使用 scp 命令

简介:

scp 是安全拷贝协议Secure Copy Protocol的缩写,和众多 Linux/Unix 使用者所熟知的拷贝(cp)命令一样。scp 的使用方式类似于 cp 命令,cp 命令将一个文件或文件夹从本地操作系统的一个位置(源)拷贝到目标位置(目的),而 scp 用来将文件或文件夹从网络上的一个主机拷贝到另一个主机当中去。

scp 命令的使用方法如下所示,在这个例子中,我将一个叫 “importantfile” 的文件从本机(10.10.16.147)拷贝到远程主机(10.0.0.6)中。在这个命令里,你也可以使用主机名字来替代IP地址。

 
  1. [root@localhost ~]# scp importantfile admin@10.0.0.6:/home/admin/
  2. The authenticity of host '10.0.0.6 (10.0.0.6)' can't be established.
  3. RSA key fingerprint is SHA256:LqBzkeGa6K9BfWWKgcKlQoE0u+gjorX0lPLx5YftX1Y.
  4. RSA key fingerprint is MD5:ed:44:42:59:3e:dd:4c:12:43:4a:89:b1:5d:bd:9e:20.
  5. Are you sure you want to continue connecting (yes/no)? yes
  6. Warning: Permanently added '10.0.0.6' (RSA) to the list of known hosts.
  7. admin@10.0.0.6's password:
  8. importantfile 100% 0 0.0KB/s 00:00
  9. [root@localhost ~]#

类似的,如果你想从一个远程主机中取得文件,你可以利用如下的 scp 命令。

 
  1. [root@localhost ~]# scp root@10.10.16.137:/root/importantfile /home/admin/
  2. The authenticity of host '10.10.16.137 (10.10.16.137)' can't be established.
  3. RSA key fingerprint is b0:b0:a3:c3:2e:94:13:0c:29:2e:ba:0b:d3:d6:12:8f.
  4. Are you sure you want to continue connecting (yes/no)? yes
  5. Warning: Permanently added '10.10.16.137' (RSA) to the list of known hosts.
  6. root@10.10.16.137's password:
  7. importantfile 100% 0 0.0KB/s 00:00
  8. [root@localhost ~]#

你也可以像 cp 命令一样,在 scp 命令中使用不同的选项,scp 的 man 帮助详细地阐述了不同选项的用法和用处。

示例输出

scp 可选参数如下所示:

 
  1. -B 采取批量模式(避免询问密码或口令)
  2. -C 启用压缩。通过指明 -C 参数来开启压缩模式。
  3. -c 加密方式
  4. 选择在传输过程中用来加密的加密方式 这个选项会被直接传递到 ssh(1)。
  5. -F ssh 配置
  6. ssh 指定一个用来替代默认配置的配置文件。这个选项会被直接传递到 ssh(1)。
  7. -l 限速
  8. 限制命令使用的带宽,默认单位是 Kbit/s
  9. -P 端口
  10. 指定需要的连接的远程主机的端口。
  11. 注意,这个选项使用的是一个大写的“P”,因为小写的“-p”已经用来保留目标文件的时间和模式相关信息。(LCTT 译注:ssh 命令中使用小写的“-p”来指定目标端口。)
  12. -p 保留文件原来的修改时间,访问时间以及权限模式。
  13. -q 静默模式:不显示来自 ssh(1) 命令的进度信息,警告和诊断信息。
  14. -r 递归拷贝整个目录。
  15. 注意,scp 命令在树形遍历的时候同样会跟随符号连接,复制所连接的文件。
  16. -v 详细模式。scp ssh(1) 将会打印出处理过程中的调试信息。这可以帮助你调试连接、认证和配置方面的问题。

详细模式

利用 scp 命令的 -v 选项,你可以得到认证、调试等的相关细节信息。

当我们使用 -v 选项的时候,一个简单的输出如下所示:

 
  1. [root@localhost ~]# scp -v abc.txt admin@10.0.0.6:/home/admin
  2. Executing: program /usr/bin/ssh host 10.0.0.6, user admin,
  3. command scp -v -t/home/admin
  4. OpenSSH_7.1p1, OpenSSL 1.0.2d-fips 9 Jul 2015
  5. debug1: Reading configuration data /etc/ssh/ssh_config
  6. debug1: /etc/ssh/ssh_config line 56: Applying options for *
  7. debug1: Connecting to 10.0.0.6 [10.0.0.6] port 22.
  8. debug1: Connection established.
  9. debug1: Server host key: ssh-rsa SHA256:LqBzkeGa6K9BfWWKgcKlQoE0u+gjorX0lPLx5YftX1Y
  10. debug1: Next authentication method: publickey
  11. debug1: Trying private key: /root/.ssh/id_rsa
  12. debug1: Trying private key: /root/.ssh/id_dsa
  13. debug1: Trying private key: /root/.ssh/id_ecdsa
  14. debug1: Trying private key: /root/.ssh/id_ed25519
  15. debug1: Next authentication method: password
  16. admin@10.0.0.6's password:
  17. debug1: Authentication succeeded (password).
  18. Authenticated to 10.0.0.6 ([10.0.0.6]:22).
  19. debug1: channel 0: new [client-session]
  20. debug1: Requesting no-more-sessions@openssh.com
  21. debug1: Entering interactive session.
  22. debug1: Sending environment.
  23. debug1: Sending command: scp -v -t /home/admin
  24. Sending file modes: C0644 174 abc.txt
  25. Sink: C0644 174 abc.txt
  26. abc.txt 100% 174 0.2KB/s 00:00
  27. Transferred: sent 3024, received 2584 bytes, in 0.3 seconds
  28. Bytes per second: sent 9863.3, received 8428.1
  29. debug1: Exit status 0
  30. [root@localhost ~]#

当我们需要拷贝一个目录或者文件夹的时候,我们可以使用 -r 选项,它会递归拷贝整个目录。

静默模式

如果你想要关闭进度信息以及警告和诊断信息,你可以通过使用scp命令中的-q选项.

上一次我们仅仅使用 -r 参数,它显示了逐个文件的信息,但这一次当我们使用了 -q 参数,它就不显示进度信息。

利用 scp 的 -p 选项来保留目标文件的更新时间,访问时间和权限模式。

通过 -P 选项来指定远程主机的连接端口

scp 使用 ssh 命令来在两个主机之间传输文件,因为 ssh 默认使用的是22端口号,所以 scp 也使用相同的22端口号。

如果我们希望改变这个端口号,我们可以使用 -P(大写的 P,因为小写的 p 用来保持文件的访问时间等)选项来指定所需的端口号。

举个例子,如果我们想要使用2222端口号,我们可以使用如下的命令

 
  1. [root@localhost ~]# scp -P 2222 abcd1 root@10.10.16.137:/root/

限制命令使用的带宽,指定的单位是 Kbit/s

如下所示,我们可以使用 -l 参数来指定 scp 命令所使用的带宽,在此我们将速度限制为512kbit/s。

开启压缩

如下所示,我们可以通过开启 scp 命令的压缩模式来节省传输过程中的带宽和时间。

选择加密数据的加密方式

scp 默认使用 AES-128 的加密方式,如果我们想要改变这个加密方式,可以通过 -c(小写的 c) 参数来指定其他的加密方式。

现在你可以利用 scp(Secure copy)命令在你所属网络中的两个节点之间安全地拷贝文件了。


原文发布时间为:2016-06-13

本文来自云栖社区合作伙伴“Linux中国”

相关文章
|
16天前
|
Web App开发 Linux 网络安全
工作中常用到的Linux命令
工作中常用到的Linux命令
|
16天前
|
Web App开发 Java Linux
Linux之Shell基本命令篇
Linux之Shell基本命令篇
Linux之Shell基本命令篇
|
4天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
13天前
|
NoSQL Linux Shell
常用的 Linux 命令
常用的 Linux 命令
35 9
|
1天前
|
Ubuntu Linux Shell
linux免交互登陆远程主机并执行命令(密钥对和Expect)
linux免交互登陆远程主机并执行命令(密钥对和Expect)
|
1天前
|
Linux
【Linux】常用命令
【Linux】常用命令
19 0
|
1天前
|
安全 Ubuntu Linux
Linux 网络操作命令Telnet
Linux 网络操作命令Telnet
9 0
Linux 网络操作命令Telnet
|
2天前
|
Linux 数据安全/隐私保护
Linux常用命令实例带注释
Linux常用命令实例带注释
28 0
|
2天前
|
Linux 开发工具 数据安全/隐私保护
Linux(19)常用解压命令记录
Linux(19)常用解压命令记录
7 0
|
4天前
|
Linux Perl
Linux系统替换字符串常用命令
请注意,`sed`命令可以非常强大,可以根据不同的需求使用不同的选项和正则表达式来进行更复杂的字符串替换操作。
16 0