使用 scp 命令在 Linux 中安全地复制文件

有时您想在本地系统和远程服务器之间传输文件。 有多种协议和方法可供您以安全的方式处理文件传输。

Linux 中的 scp 命令就是这样一种工具,可帮助用户在本地和远程主机之间远程共享文件。 在本文中,我们将详细讨论 scp 命令,以及它的用法和该命令的一些附加功能。

什么是 scp 命令

Scp,缩写为 安全复制, 是基于 Linux 的操作系统中的命令行实用程序,允许用户在远程主机和本地主机之间复制文件。 由于该命令通过网络将文件传输到其他主机,因此需要 SSH 访问。 SSH(安全外壳)是一种允许您通过任何网络安全地处理网络服务的协议。

scp 命令还支持一些附加功能,例如指定身份验证参数、更改端口、传输目录等。

为什么 Scp 比其他方法更好

scp 通常比其他文件传输方法更受欢迎,因为在传输过程中,两台主机之间的连接是加密的。 SSH 协议负责加密文件、密码和任何其他敏感信息。

Telnet 或 FTP 等其他传输方法没有任何加密。 此外,用户/密码密钥对也以纯文本形式保存,这根本不是一个好习惯。 黑客可以通过嗅探您的网络轻松访问您的信息。

如何使用 Scp 安全传输文件

使用 scp 命令,您可以在以下之间传输文件:

  1. 本地主机和远程主机
  2. 远程主机和本地系统
  3. 两台远程主机

基本语法

scp 命令的基本语法是:

scp [options] [source] [destination]

从本地主机传输到远程系统

如果您是服务器管理员,那么在本地主机和远程主机之间传输文件可能对您有用。 上传一个名为 文件.txt 到远程主机:

scp /home/document.txt user@remote-host:/home/document.txt

请注意,源是本地存储上文件的路径。 目标是远程主机上文件的路径。 您还必须指定远程服务器的用户名和域名。 在上面的命令中, 用户 是用户名和 远程主机 是域名。

目标路径与远程主机详细信息使用 冒号 特点 ()。 请记住,如果要成功传输文件,用户必须存在于远程服务器上。 此外,用户应该对要保存文件的目录具有写入权限。

发出上述命令后,系统会询问您远程用户的密码。 输入密码并按 Enter.

user@remote-host's password:

如果密码有效,文件传输将初始化。 如果您输入了错误的密码,则会发生错误。

在尝试使用 scp 命令复制文件之前,通过使用 SSH 登录到服务器,确保远程主机详细信息和密码正确。

从远程主机到本地主机

要将文件从远程主机复制到本地主机,只需在 scp 命令中交换源路径和目标路径。

scp user@remote-host:/home/document.txt /home/document.txt

系统将再次要求您输入远程用户的密码。 Enter 用于确认转移过程的密码。

两台远程主机之间

要在两个远程服务器之间复制文件,源路径和目标路径都必须是远程主机上的目录。

scp user1@remote-host1:/home/document.txt user2@remote-host2:/home/folder/document.txt

同样,将出现一个提示,要求您输入两个用户中的每一个的密码。

Scp 命令行选项

除了简单地将文件从源传输到目标之外,scp 还有一些可以使用特定参数调用的附加选项。

更改端口

默认情况下,scp 命令在端口 22 上工作。但是,您始终可以覆盖默认配置并更改端口。 这 -P flag 允许你做同样的事情。

在将文件从本地主机复制到远程主机时使用其他端口号:

scp -P 35 /home/document.txt user@remote-host:/home/document.txt

上述命令将确保 scp 命令使用端口 35 传输文件。

保留文件时间戳

您可能知道 Linux 会为每个文件设置时间戳来存储与文件关联的修改时间、访问时间和更改时间。 当您使用 scp 将文件传输到另一个位置时,目标文件的时间戳将被当前时间覆盖。

如果出于任何原因要保留这些时间戳,请使用 -p 旗帜。 请注意 -P-p 标志彼此不同。

scp -p /home/document.txt user@remote-host:/home/remote/document.txt

复制目录

如果要复制目录而不是文件,请使用 -r 标志以递归方式传输目录。

scp -r user@remote-host:/home/videos /home/videos

抑制模式

当您输入 scp 命令以传输文件时,终端会在屏幕上显示进度条和其他相关信息。 但是,您可以选择不使用 -q 旗帜。

scp -q user@remote-host:/home/document.txt /home/document.txt

使用密钥对文件进行身份验证

如果要使用密钥对文件验证远程主机连接,请使用 -一世 旗帜。

scp -i /home/keypair.pem /home/document.txt user@remote-host:/home/document.txt

将多个标志链接在一起

就像任何其他 Linux 命令一样,您可以将多个参数链接在一起以使 scp 命令更有效。

为了 example更改端口并在抑制模式下传输文件:

scp -P 34 -q user@remote-host:/home/document.txt home/document.txt

如果要使用密钥对文件进行身份验证并且需要将目录复制到目标路径:

scp -i /home/secret/keypair.pem -r /home/folder user@remote-host:/home/folder

Linux 系统之间的文件传输

在互联网世界中,在系统之间传输文件已成为一项必不可少的任务。 对于管理 Linux 服务器的人来说,有时在发出特定命令之前备份服务器很重要。 在这种情况下,scp 命令会派上用场。

同样,cp 命令有助于将文件从本地系统的一个位置复制到另一个位置。 如果您刚开始使用 Linux,则必须使用许多基本命令。