如何使用SCP命令安全地传输文件

SCP(安全副本)是一个命令行实用程序,可让您在两个位置之间安全地复制文件和目录。

scp,您可以复制文件或目录:

  • 从本地系统到远程系统。
  • 从远程系统到本地系统。
  • 在本地系统的两个远程系统之间。

当使用 scp,文件和密码均已加密,因此任何窥探流量的人都不会感到敏感。

在本教程中,我们将向您展示如何使用 scp 通过实际示例和最常见的scp选项的详细说明命令。

SCP命令语法

在进入如何使用之前 scp 命令,让我们先回顾一下基本语法。

scp 命令语法采用以下形式:

scp [OPTION] [[email protected]]SRC_HOST:]file1 [[email protected]]DEST_HOST:]file2
  • OPTION -scp选项,例如密码,ssh配置,ssh端口,限制,递归副本等。
  • [[email protected]]SRC_HOST:]file1 – 源文件。
  • [[email protected]]DEST_HOST:]file2 -目标文件

本地文件应使用绝对或相对路径指定,而远程文件名应包括用户和主机规范。

scp 提供了许多选项来控制其行为的各个方面。 最广泛使用的选项是:

  • -P -指定远程主机的ssh端口。
  • -p -保留文件修改和访问时间。
  • -q -如果要禁止显示进度表和非错误消息,请使用此选项。
  • -C -此选项强制 scp 在将数据发送到目标计算机时对其进行压缩。
  • -r -这个选项告诉 scp 递归复制目录。

在你开始之前 #

scp 命令依赖 ssh 进行数据传输,因此需要ssh密钥或密码才能在远程系统上进行身份验证。

冒号(:)是如何 scp 区分本地和远程位置。

为了能够复制文件,您必须至少具有对源文件的读取权限和对目标系统的写入权限。

复制在两个系统上共享相同名称和位置的文件时要小心, scp 会覆盖文件而不会发出警告。

传输大文件时,建议运行 scp 屏幕或tmux会话中的命令。

在两个系统之间复制文件和目录 scp

使用以下命令将本地文件复制到远程系统 scp 命令#

要将文件从本地复制到远程系统,请运行以下命令:

scp file.txt [email protected]:/remote/directory

哪里 file.txt 是我们要复制的文件的名称, remote_username 是远程服务器上的用户, 10.10.0.2 是服务器IP地址。 的 /remote/directory 是要将文件复制到的目录的路径。 如果未指定远程目录,则文件将被复制到远程用户的主目录。

系统将提示您输入用户密码,然后开始传输过程。

[email protected]'s password:
file.txt                             100%    0     0.0KB/s   00:00

从目标位置省略文件名将复制具有原始名称的文件。 如果要使用其他名称保存文件,则需要指定新文件名:

scp file.txt [email protected]:/remote/directory/newfilename.txt

如果远程主机上的SSH正在侦听默认端口22以外的端口,则可以使用 -P 论据:

scp -P 2322 file.txt [email protected]:/remote/directory

复制目录的命令与复制文件时非常相似。 唯一的区别是您需要使用 -r 递归标记。

要将目录从本地复制到远程系统,请使用 -r 选项:

scp -r /local/directory [email protected]:/remote/directory

使用以下命令将远程文件复制到本地系统 scp 命令#

要将文件从远程复制到本地系统,请使用远程位置作为源,并使用本地位置作为目的地。

例如复制一个名为 file.txt 从具有IP的远程服务器 10.10.0.2 运行以下命令:

scp [email protected]:/remote/file.txt /local/directory

如果您尚未设置无密码的SSH登录到远程计算机,则将要求您输入用户密码。

使用以下命令在两个远程系统之间复制文件 scp 命令#

不像 rsync ,使用时 scp 您无需登录到其中一台服务器即可将文件从一台传输到另一台远程计算机。

以下命令将复制文件 /files/file.txt 从远程主机 host1.com 到目录 /files 在远程主机上 host2.com

scp [email protected]:/files/file.txt [email protected]:/files

系统将提示您输入两个远程帐户的密码。 数据将直接从一台远程主机传输到另一台远程主机。

要通过发出命令的计算机路由流量,请使用 -3 选项:

scp -3 [email protected]:/files/file.txt [email protected]:/files

结论#

在本教程中,您学习了如何使用 scp 命令来复制文件和目录。

您可能还希望设置基于SSH密钥的身份验证并连接Linux服务器而不输入密码。

如果您定期连接到相同的系统,则可以通过在SSH配置文件中定义所有连接来简化工作流程。

SCP终端

Sidebar