Linux SCP 命令使用指南:高效文件传输的秘籍

发布时间:2024年01月04日

????????SCP(Secure Copy Protocol)是一种基于SSH(Secure Shell)的文件传输协议。它用于在本地主机和远程主机之间安全地复制文件和目录,或者在两个远程主机之间传输。由于SCP使用SSH进行数据传输,因此它提供了与SSH相同的安全性,包括数据加密和用户认证。

1 从本地复制到远程

scp [本地文件路径] [用户名]@[远程主机地址]:[远程文件路径]

??????假设我们本地是windows操作系统,我们来演示一下如何把windows本地的文件通过scp传输到远程Linux服务器上。

第1步:打开cmd命令

可以进入到我们要传输文件所在的目录去打开cmd窗口,这样会方便些

第2步:输入命令

把本地的testscp.png图片拷贝到远程服务器192.168.0.163上的/home/flmtest/目录下

注意:

????????我这里用的-P 2222 参数,因为我远程服务器的SSH端口是2222,如果是默认端口22的话,

-P 2222 就可以不写了,下面我们来执行命令看看效果👇

scp -P 2222 testscp.png flmtest@192.168.0.163:/home/flmtest/

界面显示传输成功

第3步:验证是否成功?

通过Xftp工具远程验证一下文件是否拷贝成功

文件传输成功

2 从远程复制到本地

? 与《从本地复制到远程》正好相反,这里给出命令写法,就不做演示了

scp [用户名]@[远程主机地址]:[远程文件路径] [本地文件路径]

3 递归复制目录

??使用 -r 参数可以递归地复制整个目录,下面给出命令写法,就不做演示了

scp -r [本地文件路径] [用户名]@[远程主机地址]:[远程文件路径]

????????SCP是一个非常实用的工具,特别适合于系统管理员和需要在不同系统间迅速安全传输文件的用户。

4?压缩文件并传输

????????使用 scp -C 选项进行文件传输时,它会启用压缩功能。

????????这意味着在传输过程中,数据会被临时压缩,以减少网络上的数据传输量,从而可能加快文件传输速度,特别是在带宽有限或传输大文件时。

????????但需要注意的是,这种压缩是透明的(对于用户来说,这个压缩过程是不可见的,用户不需要手动解压接收到的文件,因为解压是自动进行的),即它仅在传输过程中发生。

scp -C -P 2222 testscp.png flmtest@192.168.0.163:/home/flmtest/

?

5 常用选项

-P 端口号: 指定SSH连接的端口。
-p: 保留原文件的修改时间和访问时间。
-r: 递归复制整个目录。
-v: 详细模式,显示详细的传输信息。
-C: 启用压缩,可以加快传输速度。

6 如何使用密钥认证连接 SSH

6.1 生成密钥对

????????在本地计算机上使用 `ssh-keygen` 命令生成密钥对。

????????默认情况下,这将在 `~/.ssh` 目录下创建一个 RSA 密钥对(`id_rsa` 和 `id_rsa.pub`)。

ssh-keygen -t rsa -b 2048

你可以选择为密钥对设置密码(推荐),这样即使私钥泄露,不知道密码的人也无法使用它。

6.2 复制公钥到远程服务器

????????使用 `ssh-copy-id` 命令将公钥复制到远程服务器,这将把你的公钥添加到远程服务器的 `~/.ssh/authorized_keys` 文件中。

ssh-copy-id 用户名@远程服务器地址

????????如果 ssh-copy-id 不可用,你可以手动复制公钥。

????????首先,使用 cat 命令查看并复制你的公钥内容:

cat ~/.ssh/id_rsa.pub

????????然后,登录到远程服务器,编辑 ~/.ssh/authorized_keys 文件,并粘贴你的公钥。

这里需要注意:如果authorized_keys和.ssh目录都不存在,则需要我们手动创建一下

(1)创建 .ssh 目录

????????打开终端,然后执行以下命令来创建 .ssh 目录并设置适当的权限

mkdir -p ~/.ssh
chmod 700 ~/.ssh

(2)生成 SSH 密钥对

ssh-keygen

这将在 ~/.ssh 目录下生成一个新的密钥对(默认为 id_rsaid_rsa.pub)。

(3)创建 authorized_keys 文件

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

(4)将本地计算机上生成的公钥粘到authorized_keys中

????????完成这些步骤后,authorized_keys 文件就应该设置好了,并且位于 ~/.ssh 目录中,这样就可以使用基于密钥的认证来进行 SSH 连接了。

6.3 测试使用密钥认证连接SSH

如上图,测试连接失败了,接着我们在远程服务器上做如下修改👇

sudo vim /etc/ssh/sshd_config

修改内容

  • PubkeyAuthentication yes
  • AuthorizedKeysFile .ssh/authorized_keys
  • PasswordAuthentication 可以设置为 no,如果希望禁用密码认证。

修改配置后,需要重启 SSH 服务,命令如下

sudo systemctl restart sshd.service

再次尝试通过密钥方式连接SSH,成功啦~

6.4?测试使用密钥认证连接SCP

scp -C -P 2222 testscp.png flmtest@192.168.0.163:/home/flmtest/

? ? ? ? 最后总结一下,本文主要介绍了`scp`(安全拷贝)的多种实用技巧,旨在帮助大家在Linux系统中高效、安全地进行文件传输。

????????此外,还介绍了如何使用压缩选项来加速文件传输,这些实用小技巧将使`scp`的使用变得更加灵活和高效,对于日常管理Linux系统的专业人士和爱好者都是非常有价值的参考,如果喜欢的话就赶快收藏关注吧~。

文章来源:https://blog.csdn.net/Flemming323/article/details/135376770
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。