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

时间:2020-03-05 15:27:36  来源:igfitidea点击:

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

使用'scp',我们可以复制文件或者目录:

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

当使用“ scp”传输数据时,文件和密码都会被加密,因此任何窥探流量的人都不会受到任何影响。

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

SCP命令语法

在开始使用“ scp”命令之前,让我们先回顾一下基本语法。

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

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

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

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

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

在你开始之前

'scp'命令依赖于'ssh'进行数据传输,因此它需要一个ssh密钥或者密码来在远程系统上进行身份验证。

冒号(':')是'scp'区分本地和远程位置的方式。

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

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

传输大文件时,建议在 Screen或者tmux会话中运行“ scp”命令。

使用“ 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”命令将远程文件复制到本地系统

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

例如,要从IP为“ 10.10.0.2”的远程服务器复制名为“ file.txt”的文件,请运行以下命令:

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

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

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

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

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

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

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

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

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