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

假设您想要在Linux系统上的服务器之间传输一些文件。完成这项任务的方法有很多,但如果您的首要任务是安全地传输文件,那么您只有几个选择。最简单的解决方案是使用scp或Secure Copy命令传输文件,而不必担心安全性。在本文中,我们将解释如何在您的Linux系统上使用scp命令安全地使用传输文件。

在Linux中使用scp命令传输文件(2023)

目录表

什么是Linux中的scp命令

在通过安全网络传输文件时,scp命令可能非常有用。它代表安全复制协议并通过SSH(安全外壳)连接在两个系统之间传输文件和目录。使用ssh,您可以确保文件的安全性,因为它们在默认情况下是加密的。简而言之,scp命令是cp命令的一个更安全的版本,您可以在我们的文章中了解到这一点。

如何使用SCP命令:语法和选项

在我们可以通过SCP传输文件之前,让我们先看看该命令的语法和选项:

SCP

理解语法

  • 第一,指定您需要从中传输文件/目录的‘源’系统。
  • 第二,指定要将文件/目录传输到的目标系统。

如果保留上述参数中的任何一个,Linux中的scp命令将首先查找该文件,然后将该文件复制到本地。与该命令配对的一些选项包括:

选项 目的地
-P 指定要与主机系统连接的端口。如果省略,则它将默认使用端口22。
-p 在复制到目标系统时保留原始文件的修改时间、访问时间和模式。
-R 以递归方式将整个目录复制到目标系统。
-J 用于通过代理系统(跳转主机)连接源系统和目标系统。
-3 使用此标志时,它会将文件同时复制到目标系统和本地系统
-4 强制scp命令仅使用IPv4地址。
-6 强制scp命令仅使用IPv6地址。

如何使用scp命令复制文件

在Linux中使用scp命令之前,您需要在主机和目标系统上都满足一些先决条件:

  • 应安装SSH
  • 超级用户访问权限或任何具有sudo权限的用户

将文件从本地主机复制到远程目标

如果您有需要从本地系统传输到远程目标的文件,则需要使用以下语法:

SCP @

如果上面的语法看起来很复杂,下面的例子会让你一清二楚:

Scp测试.txt [email protected]:/home/remote2/Documents/

在上面的示例中:

  • Test.txt是要传输的文件的名称,位于本地系统的当前目录中。
  • 测试是目标系统上的用户名。
  • 139.144.11.105是目标系统的IP地址。
  • /home/emote2/Documents/是目标系统上将保存传输的文件的位置。

将文件从远程主机复制到本地目标

如果需要将文件从远程主机传输到本地计算机,请在您的Linux系统上使用以下SCP命令语法:

SCP @

例如,假设您需要从您正在处理的远程服务器传输一个名为test.py的文件,请使用以下命令:

Scp [email protected]:/home/test/test1.py~/test1.py

在本例中:

  • 测试是远程主机用户名。
  • 10.10.11.113是远程主机的IP地址。
  • /home/test/test1.py要从远程主机传输的文件的路径。
  • ~/test1.py是将文件传输到本地计算机并存储在主目录中之后的文件名。

将文件从一台远程主机传输到另一台远程目标

使用scp命令,您不仅可以在本地系统和远程计算机之间传输文件,还可以在两个远程系统之间传输文件。但是,在将文件从一个远程系统传输到另一个远程系统之前,建议在源系统上生成私钥和公钥,并在目标系统中存储公钥的副本。

一般情况下,在两个远程系统之间传输文件时,用户会抱怨“主机密钥验证失败”错误。要绕过该错误,请使用ssh-key作为附加措施。我们已经在这里解释了如何做到这一点:

1.使用以下命令在源服务器上生成公钥/私钥对:

SSH-KEYGEN-T

2.对于加密算法,您可以使用“RSA,“是最常用的算法还是您选择的任何其他算法。

3.然后,系统会要求您选择ssh密钥的存储位置。您可以将其存储在您选择的任何位置或默认位置。

4.对于密码,您可以输入您选择的任何内容,也可以通过按Enter键将其留空。

5.然后使用下面的命令将公钥复制到目的服务器。这样,您甚至可以使用ssh在没有密码的情况下登录到目标系统。

SSH-复制-ID@

注意事项:无密码登录方法仅适用于已为其生成ssh密钥的用户。

6.在远程服务器上创建并存储ssh密钥后,使用以下scp命令语法在两个运行Linux的远程系统之间交换文件:

SCP @ @

假设您需要将名为test.txt的文件从一台远程主机传输到另一台远程接收器,请使用以下命令:

Scp [email protected]:/HOME/test1/est.txt [email protected]:/home/remote2/Documents/test1.txt

在本例中:

  • 远程1是远程发件人主机中的用户名
  • 10.10.11.113是远程发件人主机的IP地址
  • /home/test1/test.txt是要发送的文件的路径
  • 远程2是远程接收方目标中的用户名
  • 10.11.27.111是远程接收方目标的IP地址
  • /home/emote2/Documents/test1.txt是要为要接收的文件保存的名称和路径。

使用SCP命令传输多个文件

一个接一个地传输多个文件对任何人来说都可能是一项乏味的任务。相反,您可以使用以下语法在Linux上使用scp命令来交换文件:

SCP @

例如-假设您需要向远程接收方发送四个文件,包括test1.txt、test2.py、test3.sh和est4.c,您可以使用以下命令:

Scp-P 22测试1.txt测试2.py测试3.sh测试4.c远程[email protected]:/home/远程_1/文档

让我们了解一下示例中的命令是如何工作的,以及它有什么作用:

  • -第2222页用于指定通过端口22进行连接
  • Test1.txt Test2.py Test3.sh Test4.c是要传输的文件的名称
  • 远程_1是接收系统的用户名
  • 10.10.11.113是接收方的IP地址
  • /HOME/Remote_1/Documents指存储接收到的文件的路径。

您甚至可以使用通配符发送具有相同扩展名的多个文件,如下所示:

SCP @

例如,如果您需要将所有.py文件发送到远程服务器,在Linux终端中使用以下scp命令:

Scp*.py [email protected]:/home/Remote_1/

这里,

  • *.py表示所有的python文件。
  • 远程1是接收方的用户名
  • 10.10.11.113是接收方的IP地址
  • /HOME/Remote_1/是存储接收到的文件的位置

常见问题解答

SCP文件传输安全吗?

安全复制协议或SCP是一种基于SSH技术的协议,它使用加密和身份验证在两台主机之间交换文件。这确保了两台主机之间的完全数据安全性和完整性。

SCP是否比SFTP更安全?

SCP和SFTP协议在安全性方面不相上下。与SFTP相比,使用SCP的主要优势是传输速度快,这在高延迟网络中尤其有用。

在Linux中使用SCP命令安全地传输文件

在某个时间点上,每个用户都需要通过网络交换一些文件。使用scp命令可以轻松安全高效地传输文件,即使在高延迟网络上也是如此。当然,了解各种SCP选项和语法也很有用。您还可以参考我们关于和的指南,以进一步提高您在操作系统上的文件管理技能。我们希望本文能帮助您学习如何使用scp命令在Linux计算机上传输文件。如果您在使用该命令时遇到任何问题,请务必在评论部分让我们知道。


标签

类似文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注