如何在 Linux 中进行 SCP

安全复制 (SCP) 背后的基础知识

Secure copyscp是一个 Linux 命令,用于在服务器之间安全地复制文件。它会加密这些文件,因此窥探您的网络流量的任何人都无法拦截和读取它们。SCP 内置于Secure Shell (SSH) 协议中,该协议通常使用可用的最强加密。

SCP多年来一直非常受欢迎。它易于使用、高度安全,并且预装在大多数 Linux 服务器安装中。一些桌面发行版,比如 Ubuntu,可能没有默认安装。

Windows 用户不要害怕,因为有优秀的 SCP 客户端可供您随时(且免费)使用。

准备在 Linux 上使用 SCP

在继续之前,请确保您的 Linux 服务器上安装了 SSH 服务器。如果不是,则需要安装它。在 Ubuntu 下,您可以使用apt安装OpenSSH 服务器

  1. 在 Linux 服务器上打开终端。
  2. 发出命令sudo apt update以确保您拥有可用于安装的最新源。
  3. 接下来,使用命令sudo apt install openssh-server 安装 openssh

确保要使用scp的任何计算机都安装了 SSH 服务器。

如何在 Linux 中进行 SCP

您可以使用scp将文件从本地计算机复制到远程计算机,从远程服务器复制到本地 PC,或从一台远程服务器复制到另一台。甚至可以使用单个scp命令复制整个目录。文件和您的密码均已加密,因此您无需担心任何人在嗅探您的流量时会得到任何敏感信息。

基本的scp命令语法如下:

scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
  • OPTIONscp选项,例如要使用的密码、ssh 配置、ssh 端口、限制、递归复制等。
  • [user@]SRC_HOST:file1– 正在复制的源文件。
  • [user@]DEST_HOST:]file2– 将文件复制到的目标。

您可以使用的一些选项包括:

  • -P– 指定远程主机 SSH 端口。
  • -p– 保持文件修改和访问时间。
  • -q– 此选项将抑制进度表和非错误消息。
  • -C– 如果包含此参数,它将强制scp压缩发送到目标的数据
  • -r– 这告诉scp以递归方式复制目录。

确保在两个系统上复制共享相同名称和位置的文件时非常小心。scp命令非常无情,并且会在没有任何警告的情况下覆盖文件。

两台计算机之间的简单 SCP 传输

假设我在本地 PC 上有一个名为resume.pdf的文件,并且想将它复制到我的 Linux 服务器。为此,我将打开终端或任何其他命令行应用程序,然后切换到我之前保存文件的目录。您甚至可以使用 Linux GUI 文件管理器直接在终端中打开目录

接下来,我将运行以下命令:

scp resume.pdf jeff@10.10.0.2:/home/jeff/documents/

Linux 会要求我在远程服务器上输入我的用户帐户的密码,然后传输我的文件。

如何在 Linux 中进行 SCP
scp-example

您会注意到上面的命令没有包含远程服务器的文件名。在这种情况下,scp命令会自动使用原始文件名。

另一件需要注意的重要事情是如何使用scp引用文件路径。对于本地计算机,您可以使用相对路径,但您必须提供远程服务器的完整绝对路径。例如相对路径:

  • 文件/电子表格/budget.xlsx

使用绝对路径可能看起来像这样:

  • /home/jeff/documents/电子表格/budget.xlsx

用 SCP 做更多事情

如前所述,您甚至可以使用单个scp命令复制整个目录。看起来是这样的。

scp -r ~/documents/spreadsheets jeff@10.10.0.2:/home/jeff/documents

假设电子表格目录在远程服务器上尚不存在,我本地计算机上的目录以及其中的所有文件和目录将被复制到服务器上的/home/jeff/documents/中。它将在我的文档目录中显示为一个新目录,电子表格

另一方面,如果您需要将文件从远程服务器检索到本地计算机,您可以发出如下命令:

scp jeff@10.10.0.2:/home/jeff/documents/resume.pdf ~/documents

如果您需要在两个远程服务器之间复制文件,您可以使用scp来完成。您将输入源和目标作为远程服务器,而不是指定本地源或目标。

scp jeff@10.10.0.2:/home/jeff/documents/resume.pdf bonner@10.10.0.5:/home/bonner/documents

在这种情况下,系统将提示您输入两个远程帐户的密码。即使您可能从本地桌面发出了命令,数据也会直接从一台远程主机传输到另一台远程主机。如果您希望数据路由通过您发出命令的机器,请使用-3选项:

scp -3 jeff@10.10.0.2:/home/jeff/documents/resume.pdf bonner@10.10.0.5:/home/bonner/documents

将 SSH 和 SCP 完全整合到您的工作流程中

您应该意识到sshscp可以是非常强大的工具,现在您已经了解了如何在 Linux 中进行 SCP。除了此处所涵盖的内容之外,这些命令还有更多功能,包括使用基于 SSH 密钥的身份验证来连接到您的 Linux 服务器而无需输入密码。

如果您经常连接到相同的服务器,您还可以考虑创建一个配置文件来为您连接的每台远程计算机存储不同的 SSH 选项。这可以包括从远程 IP 地址到正确的用户名,甚至常用的命令行选项的所有内容。

THE END