您是否曾经想要通过计算机网络传输一些文件并面临安全挑战?好吧,您不能只是将文件扔到网络中并希望它们保持安全,就像小红帽一样!你需要安全措施。您应该使用文件传输协议来确保您的数据免受未经授权的访问、网络嗅探、数据泄露和其他类型的威胁。
安全复制协议 (SCP) 是一种功能强大的文件传输网络协议,可在网络上的不同计算机之间传输文件。在这篇博文中,我们将更加熟悉该协议,并探索从远程到本地机器使用 SCP 的潜力。
SCP如何运作?
SCP 使用 SSH(安全外壳)来传输文件。但这究竟意味着什么呢? SSH 是一种用于安全可靠地远程访问服务器的网络协议。它配备了用于验证、加密和验证传输数据文件完整性的方法。 SCP 依靠 SSH 提供的这些安全功能和加密方法通过网络安全地传输文件。这样,您可以利用 SCP 从远程服务器到本地服务器进行安全连接和文件传输,并确保数据的真实性和机密性。
使用 SCP 进行文件传输;为什么以及如何?
使用 SCP 从远程到本地和 SCP 本地到远程是一种高效、灵活的文件传输方式。 SCP 为文件传输提供了一些主要优势。例如,SCP 提供比 FTP 等其他文件传输方法更强大的安全措施。 SCP 与其他协议不同的另一个方面是速度。 SCP 通常比 SFTP 等其他协议快得多,并且它是 Linux 计算机之间文件传输的绝佳工具。
您可以使用 SCP 重新定位文件:
- 从本地机器到远程机器
- 从远程机器到本地机器
- 从一台远程机器到另一台远程机器。
现在,让我们继续实际使用 Linux SCP 语法进行文件传输。您需要做的第一件事是在两台计算机上设置 SSH。但是,需要注意的是,SSH 通常安装在所有 Linux 计算机上。因此,如果您属于这种情况,则可以跳过这些步骤。
1.设置SSH
运行以下命令安装 SSH:
sudo apt install openssh-client
2. 生成 SSH 密钥
然后客户端设备必须建立 SSH 连接。客户端和服务器计算机之间的安全连接需要建立私钥和公钥。此命令为您创建 SSH 密钥对:
ssh-keygen
运行此命令时,可能会要求您提供密钥对的名称和密码(这是可选的)。然后,当创建密钥对时,您必须将公钥复制到服务器计算机。
现在,我们来看看SCP命令的一般形式:
scp [options] [source username@IP]:/[directory/file name] [destination username@IP]:/[directory]
- [选项] > 第一个括号可以替换为 SCP 命令的不同选项,我们稍后会介绍。
- [源用户名@IP] > 该括号应替换为本地计算机的用户名和 IP 地址。例如:[email protected]
- [目录/文件名] > 该括号应替换为您要发送的文件的位置。
- [目标用户名@IP] > 该括号应替换为接收机器的用户名和 IP 地址。
- [directory] > 将此部分替换为远程计算机上文件的所需位置。
现在您知道一般命令是什么样的了。让我们看看 SCP 命令的所有有用选项:
| 选项 | 用例 |
| -C |
通过使用此选项,SCP 在传输文件时会压缩文件。
|
| -c <密码> |
您可以使用此选项告诉 SCP 使用特定密码。例如,scp -c <aes128-ctr>。
|
| -v |
此选项为您提供了该过程的分步流程。
|
| -l <以千字节为单位的限制> |
此选项允许您设置最大带宽限制。例如,以下示例将带宽使用率设置为每秒 100 kb: scp -l 100
|
| -P |
通过使用此选项,您可以更改要连接的远程服务器的 ssh 端口。 SCP 默认使用端口 22。
|
| -S <程序名称> |
您可以使用此选项来选择连接程序。
|
| -r |
递归复制整个文件或目录。
|
使用 SCP 传输文件
那么,你还记得我们有三种类型的 SCP 传输吗?现在,我们想要独立地探索每种类型的传输。但让我们在开始之前先定义一下使命。我的 Linux 计算机桌面上有这张猫的照片,第一步,我想将其传输到 Linux 远程服务器。然后我会将其传输回我的本地计算机。最后,幸运猫将在两台远程机器之间移动。

SCP从本地到远程
使用此命令会将我们的文件从本地计算机传输到远程服务器:
scp [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
要使用带有密码的 scp 命令,您应该输入远程服务器的密码。然后你就完成了。

SCP从远程到本地
为了逆转此过程,您不需要访问远程服务器的终端。在本地计算机的终端上,输入以下命令:
scp [username]@[IP address of the remote machine]:[path/to/the/file] [path/to/the/location]
正如您所看到的,我们刚刚颠倒了该命令的两个部分。

两台远程机器之间的 SCP
现在,让我们在两台远程机器之间转移猫。此步骤需要两台远程计算机的密码,因此请确保您拥有它们。使用此命令在两台远程计算机之间传输文件:
scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]

其他常见 SCP 命令
最常见的 SCP 命令是 scp 从远程到本地、scp 从本地到远程以及 SCP 在两个远程主机之间。但我们并不止于此,我们还可以探索一些其他有用的 Linux scp 示例。
1. 递归复制整个目录
想象一下您想要传输整个目录及其包含的所有文件。如果把这些文件一份一份地传输下去,确实很费时间。相反,您可以使用 scp multiple files 命令递归复制目录:
scp -r [Path/to/directory] [username of the remote server]@[Ip address]:/[path/to/the/location]
这对于许多场景都很有用:
- 代码部署: 当您部署代码或 Web 应用程序时,您可能需要传输整个目录及其所有组件(例如文件和脚本)。
- 备份与同步: 如果您想要备份整个目录,或者想要同步本地计算机和远程服务器上的两个目录,则需要递归复制所有内容。
- 系统迁移: 系统迁移的一个关键任务是复制和传输每一条重要信息。使用带有 -r 选项的 SCP 命令将确保您在移动过程中不会错过任何内容。
2. 限制带宽使用
如果您想控制数据传输的速率,可以使用以下命令:
scp -l <limit> [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
但你为什么要这么做呢?
在这两种场景下,您可以使用Linux scp语法来设置带宽限制:
- 网络拥塞: 如果您的网络严重拥塞,使用 scp 限制带宽可以帮助分配网络资源。使用 SCP 限制带宽可确保其他与网络相关的任务运行时不会出现任何问题。当通过共享网络传输文件时,这一点也很重要,并且您的进程可能会阻碍其他用户的网络活动。
- 后台传输: 在后台 SCP 传输(例如自动备份或同步过程)期间,这些任务有可能会占用您的网络资源。在这种情况下,您可以限制这些传输进程的带宽,以更好地管理资源。
3. 获取详细日志
将 -v 选项与 SCP 一起使用将为您提供有关传输过程的附加信息的详细日志。您可以使用以下命令来获取详细的反馈和信息:
scp -v [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
这就是您需要记住并使用此命令的原因:
- 故障排除: 使用此选项可以显示传输的进度。您可以查看文件大小和完成百分比等信息。它还为您提供错误消息和警告。通过组合这些数据,您可以在需要时监控传输过程并排除故障。
4. 指定SSH端口
使用带有 -P 选项的 Linux scp 语法可以让您 更改 SSH 端口。这是可以让您执行此操作的命令:
scp -P [port number] [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
这对于以下方面很有用:
- 防火墙配置: 如果默认 SSH 端口受到限制或者您希望隐藏 SSH 服务免受潜在威胁,您可以更改 SSH 端口。
有没有 SCP 的替代品?
SCP 快速且安全,通过了解正确的 Linux scp 语法和一些故障排除知识,它可能是您需要的唯一工具。然而,回顾一下它的替代方案并没有什么坏处。
1. 同步
rsync 是一款多功能文件传输工具,具有高级同步功能、增量传输以及远程和本地复制。它还可以通过仅传输源文件和目标文件之间的差异来减少带宽使用。使用 rsync 的另一个巨大优点是它可以从中断的位置恢复中断的文件传输并继续该过程。
rsync 优点
- 文件和目录的高效同步。
- 支持增量传输算法,减少数据传输。
- 可以恢复中断的传输。
rsync 缺点
- 需要在源系统和目标系统上安装 rsync。
- 与 scp 相比,需要更多设置和命令选项。
2.SFTP(SSH文件传输协议)
SFTP 提供了一种通过 SSH 传输文件的安全方法。它提供与 FTP 类似的功能,但通过加密的 SSH 连接运行,就像 SCP 一样。但在某些领域,SFTP 的优势超过了 SCP 的优势。 SCP 无法生成目录列表、创建或删除目录等。但是,SFTP 可以执行所有这些任务。
SFTP 优点
- 通过加密确保文件传输安全。
- 远程文件管理功能。
- 在大多数 Linux 和 Unix 系统上广泛可用。
SFTP 缺点
- 命令语法和用法与传统 FTP 不同。
- 对某些嵌入式系统或设备的支持可能有限。
3.FTP(文件传输协议)
FTP 是广泛使用的文件传输标准协议。它以客户端-服务器模型运行并提供基本的文件传输功能。
FTP 优点
- 跨各种平台的广泛支持。
- 可以使用熟悉的命令行和图形客户端。
FTP 缺点
- 与 scp 和 sftp 相比,缺乏加密/安全性较低。
- 可能需要额外的防火墙配置才能建立连接。
- 纯文本验证。
总体而言,虽然 scp 是通过 SSH 进行安全文件传输的简单可靠的选择,但 rsync、sftp 和 FTP 等替代方案可能会根据具体要求提供额外的功能和灵活性。
那么您如何决定选择哪一个呢?您应该考虑安全性、同步需求、易用性以及与系统和协议的兼容性等因素。例如,如果安全性和数据机密性是文件传输中最重要的因素,那么 FTP 就不是一个好的选择。
结论
SCP 是一种用于计算机之间文件传输的快速且安全的工具。您可以使用 scp 从远程到本地、从本地到远程、甚至在两个远程系统之间传输文件。尽管 SCP 的替代方案(例如 rsync)可以胜任工作,但它在许多方面超越了它们,尤其是在安全性和速度方面。在这篇博文中,我们讨论了 SCP、它的用例和替代方案,并提供了一份备忘单,以便轻松访问常用语法。
常问问题
从远程到本地使用 SCP 时,我应该注意哪些安全问题?
SCP是一个相当安全可靠的工具,您在使用时无需担心安全威胁。但是,始终建议您尽可能采取任何额外的安全措施。
使用SCP远程转本地时常见的错误有哪些?
当使用 SCP 将文件从远程服务器传输到本地计算机时,用户可能会遇到几个常见错误。以下是使用 SCP 远程到本地的两个最常见错误:
- 没有这样的文件或目录:当您没有指定正确的端口号、文件权限设置不正确或登录信息不正确时,就会发生此错误。
- 主机密钥验证失败:当主机密钥因服务器升级而更改时,会出现此错误消息。主机密钥表明您之前连接过该服务器,当主机密钥验证失败时,则表明该服务器的身份已更改。此错误试图保护您免于连接到欺诈服务器。
如何使用 SCP 在远程系统之间传输文件?
为了使用 SCP 在系统之间成功传输文件,两台计算机都应该可以通过 SSH 访问。您还需要远程计算机的 IP 地址和密码。剩下的就是使用正确的 SCP 命令:
scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]
输入此命令后,系统会要求您提供服务器的密码。之后,您的文件将被传输。