Linux-SCP命令使用举例

Scp是Secure Copy的缩写。它主要用于通过ssh连接复制文件。复制的文件被加密并假定为ssh安全。如果文件包含敏感数据,用SCP或类似的加密协议复制它们是最好的解决方案。在本教程中,我们将详细介绍如何使用SCP。

null

使用ssh包安装scp命令

Scp是由Linux发行版中的ssh包提供的。所以要安装 scp 我们将安装ssh,但ssh通常是默认安装的。

Ubuntu、Debian、Mint、Kali

scp 提供了 ssh 包裹。我们将安装 ssh 包装如下 apt install 命令。

$ sudo apt install ssh -y
Ubuntu, Debian, Mint, Kali
Ubuntu、Debian、Mint、Kali

软呢帽、CentOS、RHEL

我们将使用 dnf yum 包管理器。

$ sudo dnf install ssh -y

或者

$ sudo yum install ssh -y

Scp命令语法

要获得简单快速的帮助,请运行SCP,而不使用以下任何参数。如我们所见,我们使用 scp 命令并提供与连接相关的选项。然后我们将提供一个用户名和远程主机名 @ 分隔符。

scp OPTIONS [email protected]_HOST:/FILES_DIRECTORIES [email protected]_HOST:/FILES_DIRECTORIES
  • 选项将定义 scp 密码类型、递归、速度、ssh端口和限制等命令。
  • USERNAME是远程系统的用户
  • SOURCE主机是我们要复制文件和文件夹的主机,这些文件和文件夹将成为源。
  • 目标主机是复制源文件和目录的目标主机。
  • 文件目录是复制的文件和目录远程系统路径和名称。

Scp命令帮助信息

更详细地了解 帮助 人scp 命令的用法如下。Scp Unix用法与Linux Scp用法没有区别。

$ man scp
Scp Command Help Information
Scp命令帮助信息

使用Scp将远程文件复制到本地系统

我们将用下面的scp命令复制文件。复制文件时,scp将要求提供凭据。

$ scp [email protected]:/home/ismail/Downloads/backup.tar.gz /home/ali

我们已经复制了backup.tar.gz 通过提供 ismail 从本地系统到 /home/ali . 没有要求输入密码,因为我已经复制了所需的凭据。

相关文章: 如何在Linux下用PGP验证文件和签名?

使用证书身份验证运行不带密码的Scp命令

如果我们想使用 scp 在无密码和更安全的方式下,我们需要设置基于SSH密钥的身份验证。为了建立基于密钥的身份验证,我们需要使用 ssh-keygen 命令如下。

$ ssh-keygen
Passwordless scp Command
无密码scp命令

在创建一个密钥对之后,我们将通过向用户提供以下命令将公钥部署到远程系统。它将询问用户的密码。部署之后,我们可以使用ssh而不需要密码。

$ ssh-copy-id [email protected]

使用Scp将本地文件复制到远程

我们将本地文件复制到远程。正如您将看到的,从远程复制到本地没有什么区别。

$ scp backup.tar.gz  [email protected]:/home/ismail/Downloads
  • backup.tar.gz 是要复制到远程的本地文件名。
  • ismail 是我们将在远程服务器上验证的用户名。
  • 192.168.122.233 是远程系统的IP地址。
  • /home/ismail/Downlaods 是要复制的远程系统路径。

使用Scp将远程文件复制到本地

或者,我们可以将远程文件和目录复制到本地系统。我们将把远程系统指定为源主机。在指定源主机时,我们可能需要显式地提供用户名。然后我们将指定作为本地系统路径的目标。在本例中,我们将复制名为 test.tar.gz 文件到本地系统路径 /home/ismail . 我们将使用 ali 作为远程系统用户名。

$ scp [email protected]:/mnt/test.tar.gz /home/ismail/

使用Scp递归复制文件夹

到目前为止,我们已经从远程复制了单个文件。可以使用递归参数复制文件夹及其子文件夹。Recursive参数使得可以递归地复制整个目录。我们将使用 -r 选项。

$ scp -r Downloads 192.168.122.233:/home/ismail/Documents

将多个本地文件复制到远程系统

我们可以用SCP命令将多个本地文件复制到远程系统。我们将只提供源的本地文件名,最后,我们将提供要复制的目标或远程系统。在本例中,我们将复制名为 file1.txt , file2.txt file3.tar.gz 到远程系统。

$ scp file1.txt file2.txt file3.tar.gz [email protected]:/home/ismail/

复制特定文件类型或扩展名的所有文件

在某些情况下,我们可能只需要复制特定的文件类型或扩展名。我们可以使用bash glob操作符来泛化文件名并设置扩展名。在本例中,我们将使用 *.txt 扩展到远程系统。

$ scp /home/ismail/*.txt  [email protected]:/home/ismail

使用Scp复制时压缩文件

Scp在复制时对文件进行加密,这会导致传输性能损失。我们可以通过压缩文件来消除这种性能损失。请记住,文件是为传输而压缩的,而不是完全压缩的。我们将使用 -C 压缩选项。

$ scp -C original-ks.cfg  [email protected]:/root/original-ks.cfg

通过提供 -C级 参数我们已经为传输启用了压缩。

为Scp使用不同的SSH端口

Ssh默认运行tcp/22,但有时可能与此不同。Scp也假设ssh 22的端口。我们可以像下面这样改变端口。我们将为端口名提供 -P 选项和端口号。

$ scp -P 2222 original-ks.cfg  [email protected]:/root/original-ks.cfg

我们已经提供了 -第 参数和值 </b>2222 .

设置Scp文件传输的带宽限制

如果我们的网络容量或带宽是有限的,或有一些重负载,这是重要的复制文件与Scp将产生额外的负载。我们可能需要限制Scp命令的带宽使用。我们可以使用 -l 选项并提供要为Scp命令设置的带宽。在本例中,我们将带宽使用率设置为100kbps。

$ scp -l 100 Backup.tar.gz  192.168.122.233:/home/ismail/Documents

Scp的详细或调试模式

如果Scp文件传输或连接有问题,我们必须排除故障。因此,我们需要更多关于Scp的信息,其中可以使用 -v .

$ scp -r -v kafka_2.12-2.2.0 [email protected]:/home/ismail/backup/
Verbose and Debug Mode For Scp
Scp的详细和调试模式

向Scp命令传递密码

我们已经设置了基于密钥的无密码身份验证,但我们可能需要将SCP与密码一起使用。在本例中,我们可以使用一个名为sshpass的简单应用程序向SCP提供密码,如下所示。

$ dnf install sshpass

我们已经安装好了。因为它与ssh工具是分开的。

$ sshpass -p "123456" scp original-ks.cfg [email protected]:/root/original-ks.cfg

在这里 -第 密码和 “123456” 是我们的密码。注意,我们的密码不强,很容易被破解。然后我们提供常规的scp命令。

相关文章: 什么是FTP(文件传输协议)?

如何用Scp逃逸路径中的空格

如果本地或远程路径中存在空间,则可能会出现问题。假设我们有一个名为  “测试1“。有两种解决方案

$ scp  original-ks.cfg  [email protected]:/root/Downloads/test 1/

我们有简单的加法 在文件夹名称的空格之前。

$ scp  original-ks.cfg  [email protected]:"'/root/Downloads/test 1/'"

我们已经添加了一个单引号和双引号围绕路径如上所述。

SCP性能

我们知道SCP使用了一些加密算法。默认情况下,Scp使用三重DES加密网络流量。三重DES可能会造成一些性能瓶颈,因此更快的Blowfish或aes128 ctr加密算法的使用将加快传输速度。

$ scp -c aes128-ctr tmux.tar ubu1:/home/ismail/backup/
Linux SCP Command Usage With Examples Infografic
Linux SCP命令使用示例Infografic

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享