乐趣区

关于linux:Linux-中使用-SCP-命令安全复制文件

SCP 是 linux 发行版中的命令行工具,用于通过网络安全地跨零碎复制文件和目录。SCP 代表平安复制,因为它应用 ssh 协定复制文件。

拷贝时,scp 命令建设 ssh 连贯到近程零碎。换句话说,咱们能够说 scp 在后端应用雷同的 SSH 平安机制,它须要明码或密钥进行身份验证。

SCP 命令语法

从本地零碎复制到近程主机

scp <options> <files_or_directories> user@target_host:/<folder>

从近程主机复制到本地零碎

scp <options> user@target_host:/files   <folder_local_system>

上面列出了 scp 命令中应用最宽泛的一些选项

  • -C 启用压缩
  • -i 身份文件或私钥
  • -l 复制时限度带宽
  • -P 指标主机 SSH 端口号
  • -p 在复制时保留文件的权限、模式和拜访工夫
  • -q 禁止显示 SSH 的正告音讯
  • -r 递归复制文件和目录
  • -v 具体输入

1) 从本地复制文件到近程

假如咱们要将 jdk rpm 包从本地 Linux 零碎复制到近程零碎 (172.20.10.8) /opt 目录下

$ scp jdk-linux-x64_bin.rpm root@172.20.10.8:/opt
root@172.20.10.8's password:
jdk-linux-x64_bin.rpm    100%   10MB  27.1MB/s   00:00
$

2) 从近程复制文件到本地

Suppose we want to copy a file from remote system to our local system under the /tmp folder, execute the following,

假如咱们要将文件从近程复制到本地 /tmp 目录下

$ scp root@172.20.10.8:/root/Technical-Doc-RHS.odt /tmp
root@172.20.10.8's password:
Technical-Doc-RHS.odt    100% 1109KB  31.8MB/s   00:00
$ ls -l /tmp/Technical-Doc-RHS.odt
-rwx------. 1 pkumar pkumar 1135521 Oct 19 11:12 /tmp/Technical-Doc-RHS.odt
$

3) 复制文件时具体输入

咱们能够在复制文件时应用 -v 选项启用具体输入。应用具体输入,咱们能够很容易地发现后盾到底产生了什么。这在调试连贯、身份验证和配置问题时十分有用。

$ scp -v jdk-linux-x64_bin.rpm root@172.20.10.8:/opt
Executing: program /usr/bin/ssh host 172.20.10.8, user root, command scp -v -t /opt
OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf
debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config
debug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *
debug1: Connecting to 172.20.10.8 [172.20.10.8] port 22.
debug1: Connection established.
…………
debug1: Next authentication method: password
root@172.20.10.8's password:

4) 复制多个文件到近程

应用 scp 命令能够一次性拷贝多个文件到近程。指定以空格分隔多个文件,示例如下

$ scp install.txt index.html jdk-linux-x64_bin.rpm root@172.20.10.8:/mnt
root@172.20.10.8's password:
install.txt         100%    0     0.0KB/s   00:00
index.html       100%   85KB   7.2MB/s   00:00
jdk-linux-x64_bin.rpm     100%   10MB  25.3MB/s   00:00
[pkumar@linuxtechi ~]$

5) 跨两个近程零碎复制文件

应用 scp 命令,咱们能够在两个近程主机之间复制文件和目录,假如咱们有一个本地 Linux 零碎,它能够连贯到两个近程 Linux 零碎,那么从我的本地零碎,我能够应用 scp 命令在这两个零碎之间复制文件,语法如下:

$scp user@remote_hosts1:/<files_to_transfer>  user@remote_host2:/<folder>

示例如下所示:

$ scp pkumar@172.20.10.9:~/backup-Oct.zip root@172.20.10.8:/tmp
$ ssh root@172.20.10.8 "ls -l /tmp/backup-Oct.zip"
-rwx------. 1 root root 747438080 Oct 19 12:02 /tmp/backup-Oct.zip

6) 递归复制文件和目录

在 scp 命令中应用 -r 选项递归地将整个目录从一个零碎复制到另一个零碎,示例如下

$ scp -r Downloads root@172.20.10.8:/opt

应用以下命令验证下载文件夹是否复制到近程零碎

$ ssh root@172.20.10.8 "ls -ld /opt/Downloads"
drwxr-xr-x. 2 root root 75 Oct 19 12:10 /opt/Downloads
$

7) 通过启用压缩来减少拷贝速度

咱们能够通过应用 -C 选项启用压缩来减少传输或复制速度,它将主动在源处启用压缩并在指标处解压缩。

假如咱们须要递归传输 Downlod 目录时启用压缩

$ scp -r -C Downloads root@172.20.10.8:/mnt

8) 复制时限度带宽

Use‘-l’option in scp command to put limit on bandwidth usage while copying. Bandwidth is specified in Kbit/s, example is shown below,

应用 SCP 命令中的 -l 选项对带宽应用限度。单位 Kbit/s,示例如下

$ scp -l 500 jdk-linux-x64_bin.rpm  root@172.20.10.8:/var

9) 应用不同的 SSH 端口

在某些状况下,指标主机上的 ssh 端口会被更改,咱们能够应用 -P 选项指定 ssh 端口号。

$ scp -P 2022 jdk-linux-x64_bin.rpm  root@172.20.10.8:/var

10) 复制时保留权限、模式和拜访工夫

在 scp 命令中应用 -p 选项保留从源复制到指标时的权限、拜访工夫和模式

$ scp -p jdk-linux-x64_bin.rpm  root@172.20.10.8:/var/tmp
jdk-linux-x64_bin.rpm            100%   10MB  13.5MB/s   00:00
$

11) 以宁静模式复制文件

在 scp 命令中应用 -q 选项禁止 ssh 的传输进度、正告和诊断音讯。示例如下

$ scp -q -r Downloads root@172.20.10.8:/var/tmp

12) 应用标识文件

在大多数 Linux 环境中,首选基于密钥的身份验证。在 scp 命令中,咱们能够应用 -i 选项指定标识文件或私钥文件,示例如下

$ scp -i my_key.pem -r Downloads root@172.20.10.8:/root

13) 应用不同的 ssh 配置文件

在某些状况下,您应用不同的网络连接到 Linux 零碎,可能是某些网络背地是代理服务器,所以在这种状况下,咱们必须有不同的 ssh_conig 文件。

scp 命令中不同的 ssh 配置文件通过 -F 选项指定,示例如下

$ scp -F /home/pkumar/new_ssh_config -r Downloads \ 
root@172.20.10.8:/root
root@172.20.10.8's password:
jdk-linux-x64_bin.rpm   100%   10MB  16.6MB/s   00:00
backup-Oct.zip   100%  713MB  41.9MB/s   00:17
index.html   100%   85KB   6.6MB/s   00:00
$

14) 应用不同的明码

缺省状况下,scp 应用 AES-128 算法对文件进行加密。如果您想应用另一个算法,则应用 -c 选项后跟算法名称,示例如下

$ scp -c 3des-cbc -r Downloads root@172.20.10.8:/root

应用上面的命令能够查看 ssh 和 scp 反对的加密算法

$ ssh -Q cipher localhost | paste -d , -s -
3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,\
aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,\
chacha20-poly1305@openssh.com
$

我的开源我的项目

  • course-tencent-cloud(酷瓜云课堂 – gitee 仓库)
  • course-tencent-cloud(酷瓜云课堂 – github 仓库)
退出移动版