如何在 Ubuntu 24.04 上使用 SCP 命令教程

如何在 Ubuntu 24.04 上使用 SCP 命令教程

简介

scp 代表 Secure Copy Protocol。Linux 中的 scp 命令允许你通过加密的 SSH (Secure Shell) 连接安全地在主机之间传输文件。与常规的复制命令(如 cp)不同,scp 还确保在传输过程中数据的完整性。

本文将解释如何使用 scp 命令有效地在 Linux 中传输文件和目录。

准备工作

服务器准备

必要前提:

  ## 准备工作

  ### 服务器准备

必要前提:

  - 两台部署了 Ubuntu 24.04 的实例,并启用 `limited user login` 选项,分别用作你的 `local` 和 `remote` 工作站(推荐腾讯云、阿里云或雨云等)。
  • 使用 SSH 访问这两个实例。
  • 更新这些实例。

​ 我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://www.rainyun.com/NTE2NDM3_

  ### 创建雨云服务器

​ > 以下步骤仅供参考,请根据实际需求选择配置。
​ >

  - 点击 **云产品** → **云服务器** → **立即购买**。
      - 选择距离你较近的区域,以保证低延迟。

https://syxoss.oss-cn-hangzhou.aliyuncs.com/yuyun/a626f58947d813c0df4f5c5ca95f619d.png

- 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
- 最后按照提示进行购买。
- 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

https://syxoss.oss-cn-hangzhou.aliyuncs.com/yuyun/61e0f1c65fb7536736e450fc71063d30.png

- 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

https://syxoss.oss-cn-hangzhou.aliyuncs.com/yuyun/022fd23d4fa836172b6f0afb1d82b9f1.png

- 到此为止,我们的云服务器就远程连接上了。

安装和配置步骤

SCP 命令语法

以下是基本的 scp 命令语法:

scp [options] [source] [destination]

在上述 scp 命令中:

  • [options]:接受可选标志以修改命令的行为。
  • [source]:指定要复制的文件或目录。
  • [destination]:设置你想要放置文件的目标位置。

使用最常见的 SCP 命令选项

以下是最常见的 scp 命令选项:

选项描述
-P指定连接远程主机时使用的端口。
-p保留原始文件的修改时间、访问时间和模式。
-r递归复制整个目录。
-q安静模式;抑制非错误消息。
-C启用压缩。
-l限制传输过程中使用的带宽。
-v详细模式;显示详细的调试消息。
-i设置用于认证的私钥位置

创建样本目录和文件

按照以下步骤在 Linux 上创建样本目录和文件以测试 scp 命令。

  1. 在本地服务器上创建三个样本 .txt 文件。
$ touch file1.txt file2.txt file3.txt
  1. 在本地服务器上创建一个样本 dir 目录。

  2. 在远程服务器上创建三个样本 .txt 文件。

$ touch file4.txt file5.txt file6.txt
  1. 在远程服务器上创建 dir1dir2 样本目录。

使用 SCP 传输文件和目录

按照以下步骤使用 scp 命令在 Linux 中传输文件和目录。

  1. file1.txt 文件从本地服务器复制到远程服务器。
$ scp file1.txt linuxuser2@remote_server:/home/linuxuser2

上述命令安全地将 file1.txt 从本地服务器复制到远程服务器用户的主目录。默认情况下,SCP 命令将文件复制到用户的主目录,除非你指定了另一个目录。

当提示时输入 yes 接受远程服务器的指纹密钥。

  1. 从远程服务器将 file4.txt 复制到本地服务器。
$ scp linuxuser2@remote_server:/home/linuxuser2/file4.txt /home/linuxuser1/
  1. 使用递归 -r 选项将 dir 目录从本地服务器复制到远程服务器。
$ scp -r dir linuxuser2@remote_server:/home/linuxuser2/

上述命令使用 -r 选项递归地将 dir 目录从本地服务器复制到远程服务器上的 linuxuser2 主目录,包括所有文件和子目录。

  1. 将远程服务器上的 dir1 目录复制到本地服务器用户的主目录。
$ scp -r linuxuser2@remote_server:/home/linuxuser2/dir1 /home/linuxuser1/

你可以探索 Linux 中的 find 命令,快速定位系统上的文件。

使用 SSH 密钥启用无密码认证

scp 命令默认使用密码认证来复制和传输文件。基于 SSH 密钥的认证允许在使用 scp 命令传输文件时实现无密码认证。按照以下步骤生成新的 SSH 密钥以与 scp 命令一起使用。

  1. 在本地服务器上生成新的 SSH 密钥对。
$ ssh-keygen -t rsa -b 4096

Enter 接受默认私钥文件位置,并在提示时设置可选的密码短语。

  1. 将你的公钥复制到远程服务器。
$ ssh-copy-id linuxuser2@remote_server

当提示时输入远程用户密码以复制公钥。

  1. 使用 SSH 访问远程服务器,并验证你不会被提示输入密码。
$ ssh linuxuser2@remote_server

使用 SCP 命令和 SSH 密钥认证传输文件

按照以下步骤使用 scp 命令和 SSH 密钥认证传输文件。

  1. file2.txt 从本地服务器复制到远程服务器的 dir2 目录。
$ scp file2.txt linuxuser2@remote_server:/home/linuxuser2/dir2/

上述命令安全地将 file2.txt 文件从本地服务器复制到远程服务器的 dir2

输出:

  1. 将远程服务器的 dir2 目录复制到本地服务器。
$ scp -r linuxuser2@remote_server:/home/linuxuser2/dir2 /home/linuxuser1

输出:

在 Linux 中使用 SCP 命令和高级选项

  1. file3.txt 复制到远程服务器的 dir2 目录,并使用 -p 选项保留原始文件属性。
$ scp -p file3.txt linuxuser2@remote_server:/home/linuxuser2

上述命令使用 -p 选项复制 file3.txtdir2 目录,同时保留原始文件属性,包括原始时间戳和文件权限。

输出:

  1. file1.txt 复制到远程服务器并使用 -C 选项启用压缩。
$ scp -C file1.txt linuxuser2@remote_server:/home/linuxuser2/dir2/

上述命令复制 file1.txtdir2 目录,并使用 -C 选项在传输过程中压缩数据以加快速度。

输出:

  1. 使用 -l 选项限制 file2.txt 的带宽至每秒千比特(Kbps)。
$ scp -l 500 file2.txt linuxuser2@remote_server:/home/linuxuser2

上述命令使用 -l 选项将传输速度限制为 500 Kbps,避免在将文件传输到远程服务器时过度使用网络资源。

输出:

  1. 使用 -v 选项在详细模式下显示详细的调试消息。
$ scp -v file3.txt linuxuser2@remote_server:/home/linuxuser2

输出:

  1. 使用 -i 选项指定用于认证的私钥。将 /path/to/private_key 替换为你实际的私钥路径。
$ scp -i /path/to/private_key file1.txt user@remote_server:/home/linuxuser2

上述命令使用 -i 选项指定一个私钥文件用于 SSH 认证。这在使用多个 SSH 密钥时非常有用,需要使用特定的密钥建立连接。

输出:

运行以下命令在你的用户主目录下查看默认的 SSH 私钥位置。

输出:

  1. 使用特定的 SSH 端口 -Pfile3.txt 复制到远程服务器目录。
$ scp -P 22 file3.txt linuxuser2@remote_server:/home/linuxuser2

上述命令使用 -P 选项使用默认的 SSH 端口 22 传输文件。当远程服务器上的 SSH 守护进程在自定义端口上运行时,这一点很重要。

输出:

  1. 使用 tarscp 命令传输归档文件。例如,压缩 dir 目录并将归档文件传输到远程服务器。
$ tar czf - dir | ssh linuxuser2@remote_server 'tar xzf - -C /home/linuxuser2/dir1'

上述命令压缩 dir 目录,并通过 SSH 将数据复制到远程服务器。

tar xzf - -C 命令将文件解压到用户主目录下的 dir1 目录,以实现高级压缩和高效的文件传输。

结尾

你已经使用了 Linux 中的 scp 命令,它的语法、选项和实际示例。此外,你还设置了基于 SSH 密钥的认证,允许你更高效地传输文件和目录,无需密码。scp 命令允许你通过结合各种命令选项在 Linux 中安全高效地在主机之间传输文件。

雨云 - 新一代云服务提供商: https://www.rainyun.com/NTE2NDM3_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xxin¥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值