SCP(安全复制协议)是一种网络协议,可以让Linux (Unix) 系统在网络上安全地传输文件和目录。使用 cp(复制)命令的更安全替代方法,即 scp 命令行实用程序来发送数据。
通过加密文件和密码,SCP 在通过 SSH(安全外壳)连接复制时保护您的数据。因此,即使通信被拦截,数据仍然是加密的。
在以下情况下使用 SCP 命令:
- 将文件从本地主机复制到远程主机。
- 将文件从远程主机复制到本地主机。
- 在两个远程服务器之间复制文件。
该scp
命令将用于在本教程中使用真实场景和对最流行scp
选项的深入讨论来演示如何使用它。
先决条件
- 登录到服务器的安全 shell
- 客户端和服务器都具有 root 访问权限。
- 在服务器系统上,一个安全的 shell 登录
SCP 命令的语法
该scp
命令的语法如下:
scp [option] [user_name@source_host:path/to/source/file] [user_name@target_host:target/path]
如果你不这样做:
主机(或目标)的用户名;否则,该操作默认使用当前用户。
该程序使用命令中的路径/到/源(或目标)在本地搜索(或复制)文件。
使用远程文件时,始终指定用户和主机详细信息。
在源系统上使用对您要复制的文件具有读取权限的用户帐户。此外,您必须使用对目标系统上将保存文件的目录具有写入权限的用户帐户。
注意:目标位置在写入之前未经过验证scp
。目标中的相同文件会被不经意地覆盖。
SCP 命令选项
要修改和加快操作,您可以向命令添加各种 scp 命令参数。在scp
命令之后,选项被添加为属性。
每个选择都有一个单字符的简短形式和一个更长、更详细的等效形式。
简写 | 长表 | 描述 |
---|---|---|
-r |
--recursive |
为目录启用递归复制 |
-P |
--port |
指定 SSH 连接的端口 |
-i |
--identity |
指定用于认证的私钥文件 |
-p |
--preserve |
在传输过程中保留文件属性 |
-v |
--verbose |
启用详细输出 |
-q |
--quiet |
禁用进度条 |
在你开始之前
该scp
命令使用 ssh 传输数据,因此需要使用 ssh 密钥或密码在远程系统上进行身份验证。
SCP 使用冒号 (:) 区分本地站点和远程站点。
您必须至少拥有对源文件的读取权限和对目标系统的写入权限才能复制文件。
SCP 将在不给您停止机会的情况下覆盖数据,因此在复制两个系统上具有相同名称和位置的文件时要小心。
SCP 命令——使用示例
该scp
命令将本地文件复制到远程系统。
应使用以下命令将文件从本地系统复制到远程系统:
scp file.txt remote_username@10.10.0.2:/remote/directory
我们要复制的文件名是file.txt
,远程服务器上的用户是remote_username,服务器的IP地址是10.10.0.2。
您希望将文件复制到的目录路径在该/remote/directory
字段中。如果未指定远程目录,该文件将被复制到远程用户的主目录。
系统提示您提供用户密码后,传输过程将开始。
output
remote_username@10.10.0.2's password:
file.txt 100% 0 0.0KB/s 00:00
当文件名不在目标位置时,将使用其原始名称复制文件。如果要使用不同的名称保存文件,则必须提供新文件名:
scp file.txt remote_username@10.10.0.2:/remote/directory/newfilename.txt
如果远程主机上的 SSH 服务正在侦听默认端口以外的端口22
,您可以使用参数轻松指定所需的端口-P
。通过这样做,您可以确保该scp
命令在正确的端口上建立连接。
scp -P 2322 file.txt remote_username@10.10.0.2:/remote/directory
复制目录的命令与用于复制文件的命令非常相似。递归标志-r
是唯一必须做的区别。
该-r
选项可用于将目录从本地复制到远程系统:
scp -r ~/dir remote_username@10.10.0.2:/remote/directory
SCP 命令——将远程文件复制到本地系统
使用远程位置作为源,使用本地位置作为目标,将文件从远程系统复制到本地系统。
例如,运行以下命令从 IP 为 10.10.0.2 的远程服务器复制名为 file.txt 的文件
scp remote_username@10.10.0.2:/remote/file.txt /local/directory
如果您尚未在远程计算机上设置无密码 SSH 登录,系统将提示您输入用户密码。
SCP 命令——在两个远程系统之间复制文件
scp
使用与 不同,在远程计算机之间传输文件时rsync
,您无需事先登录服务器。
通过发出以下命令,/files/file.txt
来自远程主机的文件host1.com
将被复制到远程主机host2.com's
目录。/files
scp user1@host1.com:/files/file.txt user2@host2.com:/files
将要求您提供两个远程帐户的登录信息。直接数据传输将发生在两个远程主机之间。
使用该-3
选项通过发出命令的设备发送流量:
scp -3 user1@host1.com:/files/file.txt user2@host2.com:/files
另请阅读:如何使用 cd 命令在 Linux 中更改目录。
Linux 上的 SCP 命令 – 常见问题解答
Linux 中的 SCP 是什么?
安全的 SSH 连接用于使用称为 SCP(安全复制)的 Linux 命令行实用程序在本地和远程系统之间传输数据。
我可以使用 SCP 复制目录及其内容吗?
SCP 支持递归复制,允许您移动文件夹及其所有内容。scp -r source_directory> user>@remote_host>:destination_path>
使用-r
or--recursive
选项。
我可以为 SCP 连接指定不同的 SSH 端口吗?
是的,通过使用-P
或--port
选项和端口号作为源和目标,您可以选择不同的 SSH 端口。
在 SCP 传输期间是否可以输出详细信息?
是的,当使用或选项scp -v source> destination>
时,在详细的详细输出中显示有关 SCP 传输过程的信息。-v
--verbose
如何在 SCP 传输期间保留文件属性?
在文件传输期间,-p
或--preserve
选项保留文件属性,例如时间戳、权限和所有权:scp -p source> destination>
。
结论
在本地和远程系统之间传输文件的一个强大而安全的工具是 Linux 的 SCP(安全复制协议)命令。SCP 通过使用 SSH 协议在传输过程中保护数据的安全性和完整性。我希望您现在对如何使用该scp
命令安全地跨计算机复制数据有了更好的了解。请随时在下面的评论部分分享您的想法和反馈。
原创文章,作者:主机说,如若转载,请注明出处:https://www.hostingtalk.cn/scp-command-in-linux-a-beginners-guide-to-secure-file-transfers/