当前位置: 首页 > news >正文

【ShuQiHere】使用 SCP 进行安全文件传输

【ShuQiHere】🚀

在日常的开发和运维工作中,文件传输是一个常见的任务。scp(Secure Copy)是一个基于 SSH 协议的文件传输工具,能够在本地和远程主机之间安全地复制文件和目录。本文将详细介绍 scp 的使用方法,并提供一些实用的代码示例和技巧。

什么是 SCP? 🤔

scp 是 Secure Copy 的缩写,用于在本地和远程主机之间安全地传输文件。它利用 SSH 协议进行数据加密,确保传输过程中的数据安全性。

基本用法 🛠️

从远程复制文件到本地

scp username@remote_host:/path/to/remote/file /path/to/local/destination

示例:

scp shuqi@laptop:~/Documents/report.pdf ~/Downloads

详细解释:

  • scp: 命令名称,代表 Secure Copy,用于安全地复制文件。
  • shuqi@laptop: 远程主机的用户名和主机名。
  • ~/Documents/report.pdf: 远程主机上要复制的文件路径。
  • ~/Downloads: 本地机器上的目标路径,文件将被复制到这个目录下。

从本地复制文件到远程

scp /path/to/local/file username@remote_host:/path/to/remote/destination

示例:

scp ~/Downloads/report.pdf shuqi@laptop:~/Documents

详细解释:

  • /path/to/local/file: 本地机器上要复制的文件路径。
  • shuqi@laptop: 远程主机的用户名和主机名。
  • ~/Documents: 远程主机上的目标目录,文件将被复制到这个目录下。

复制整个目录 📁

使用 -r 参数可以递归地复制整个目录。

从远程复制目录到本地

scp -r username@remote_host:/path/to/remote/directory /path/to/local/destination

示例:

scp -r shuqi@laptop:~/Pictures ~/Downloads

详细解释:

  • -r: 递归复制整个目录,包括所有子目录和文件。
  • ~/Pictures: 远程主机上要复制的目录。
  • ~/Downloads: 本地机器上的目标路径,目录将被复制到这个位置。

从本地复制目录到远程

scp -r /path/to/local/directory username@remote_host:/path/to/remote/destination

示例:

scp -r ~/Projects/my_project shuqi@laptop:~/Documents

详细解释:

  • /path/to/local/directory: 本地机器上要复制的目录路径。
  • shuqi@laptop: 远程主机的用户名和主机名。
  • ~/Documents: 远程主机上的目标目录,目录将被复制到这个位置。

高级用法 🚀

指定端口号

如果远程主机的 SSH 服务运行在非默认端口(22),可以使用 -P 参数指定端口号。

scp -P port_number /path/to/local/file username@remote_host:/path/to/remote/destination

示例:

scp -P 2222 ~/Downloads/report.pdf shuqi@laptop:~/Documents
  • -P 2222: 指定使用端口号 2222 进行连接。
  • 其他参数与基本用法相同。

限制带宽

使用 -l 参数可以限制传输带宽(单位:Kbit/s)。

scp -l limit /path/to/local/file username@remote_host:/path/to/remote/destination

示例:

scp -l 1000 ~/Downloads/report.pdf shuqi@laptop:~/Documents

详细解释:

  • -l 1000: 限制传输速率为 1000 Kbit/s,防止占用过多带宽。
  • 适用于在网络速度有限或需要控制流量的情况下使用。

显示详细信息

使用 -v 参数可以显示详细的调试信息,便于排查问题。

scp -v /path/to/local/file username@remote_host:/path/to/remote/destination

示例:

scp -v ~/Downloads/report.pdf shuqi@laptop:~/Documents

详细解释:

  • -v: 启用详细模式,会显示文件传输的详细过程,有助于诊断连接问题或传输错误。

设置 SSH 密钥免密码登录 🔑

为了避免每次使用 scp 时都需要输入密码,可以设置 SSH 密钥认证。

步骤:

  1. 生成 SSH 密钥对(如果还没有的话):

    ssh-keygen -t ed25519 -C "your_email@example.com"
    

    详细解释:

    • ssh-keygen: 生成 SSH 密钥对的命令。
    • -t ed25519: 指定密钥类型为 Ed25519,较新且安全。
    • -C "your_email@example.com": 添加注释(通常为邮箱)以标识密钥。

    运行命令后,按提示操作:

    • 保存位置: 通常默认保存在 ~/.ssh/id_ed25519
    • 设置密码短语: 增加一层安全保护,建议设置,也可留空。
  2. 将公钥复制到远程主机:

    ssh-copy-id shuqi@laptop
    

    详细解释:

    • ssh-copy-id: 将本地的公钥复制到远程主机的 authorized_keys 文件中。
    • shuqi@laptop: 远程主机的用户名和主机名。

    输入密码后,公钥将自动添加到远程主机,之后使用 sshscp 时无需再输入密码。

常见问题解答 ❓

为什么要使用 SCP?

SCP 提供了一种简单且安全的方法在不同计算机之间传输文件。它基于 SSH,确保数据在传输过程中被加密,防止被窃听或篡改。

SCP 与 SFTP 有何区别?

  • SCP: 主要用于快速复制文件,操作简单,但功能相对有限。
  • SFTP: 提供更丰富的文件操作功能,如目录浏览、断点续传等,适合需要更多控制的场景。

如何中断 SCP 传输?

在文件传输过程中,可以按 Ctrl + C 来中断传输。但需注意,这可能会导致部分文件未完全传输。

如何查看传输进度?

默认情况下,SCP 会显示传输进度条。如果需要更详细的信息,可以使用 -v 参数(详见上文)。

总结 📝

scp 是一个强大且易于使用的文件传输工具,适用于各种场景。通过掌握基本和高级用法,你可以更加高效地管理本地与远程主机之间的文件传输需求。希望本文对你有所帮助!如果有任何问题或建议,欢迎在下方留言交流。😊

http://www.lryc.cn/news/516171.html

相关文章:

  • 海康威视H5player问题汇总大全
  • 力扣23.合并K个升序链表
  • 【C 语言指针篇】指针的灵动舞步与内存的神秘疆域:于 C 编程世界中领略指针艺术的奇幻华章
  • 游戏关卡设计的常用模式
  • 在一台服务器上使用docker运行kafka集群
  • Apache Celeborn 在B站的生产实践
  • JOIN 和 OUTER JOIN,SQL中常见的连接方式
  • Vue2: table加载树形数据的踩坑记录
  • 电子信息硕士面试经验
  • dns网址和ip是一一对应的吗?
  • springboot3 redis 常用操作工具类
  • Java工程师实现视频文件上传minio文件系统存储及网页实现分批加载视频播放
  • Redis(二)value 的五种常见数据类型简述
  • Docker 环境中搭建 Redis 哨兵模式集群的步骤与问题解决
  • 【网页自动化】篡改猴入门教程
  • 【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 4:MHE表示能力
  • Github - unexpected disconnect while reading sideband packet
  • Ubuntu 环境安装 之 RabbitMQ 快速入手
  • UE5中实现右键开镜效果
  • Apache HTTPD 换行解析漏洞(CVE-2017-15715)
  • Excel重新踩坑5:二级下拉列表制作;★数据透视表;
  • 力扣--35.搜索插入位置
  • C# 设计模式(行为型模式):模板方法模式
  • Leetcode打卡:设计一个ATM机器
  • 【TCP】SYN、ACK、FIN、RST、PSH、URG的全称
  • 【OceanBase】使用 Superset 连接 OceanBase 数据库并进行数据可视化分析
  • 【通识安全】应急救护常识23则
  • C语言:cJSON将struct结构体与JSON互相转换
  • 在Linux中,如何查看和修改网络接口配置?
  • 使用深度学习来实现图像超分辨率 综述!