如何在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是一种基于SSH技术的协议,它使用加密和身份验证在两台主机之间交换文件。这确保了两台主机之间的完全数据安全性和完整性。
SCP和SFTP协议在安全性方面不相上下。与SFTP相比,使用SCP的主要优势是传输速度快,这在高延迟网络中尤其有用。
在Linux中使用SCP命令安全地传输文件
在某个时间点上,每个用户都需要通过网络交换一些文件。使用scp命令可以轻松安全高效地传输文件,即使在高延迟网络上也是如此。当然,了解各种SCP选项和语法也很有用。您还可以参考我们关于和的指南,以进一步提高您在操作系统上的文件管理技能。我们希望本文能帮助您学习如何使用scp命令在Linux计算机上传输文件。如果您在使用该命令时遇到任何问题,请务必在评论部分让我们知道。