如何使用SCP命令安全传输文件

2023-10-23

SCP(安全复制)是一个命令行实用程序,允许您在两个位置之间安全地复制文件和目录。

With scp,您可以复制文件或目录:

  • 从本地系统到远程系统。
  • 从远程系统到本地系统。
  • 在本地系统的两个远程系统之间。

当传输数据时scp,文件和密码都经过加密,因此任何窥探流量的人都不会得到任何敏感信息。

在本教程中,我们将向您展示如何使用scp通过实际示例和最常见 scp 选项的详细解释来了解命令。

SCP 命令语法#

在讨论如何使用之前scp命令,让我们首先回顾一下基本语法。

The scp命令语法采用以下形式:

scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
  • OPTION - SCP选项例如密码、ssh 配置、ssh 端口、限制、递归复制等。
  • [user@]SRC_HOST:]file1- 源文件。
  • [user@]DEST_HOST:]file2- 目标文件

应使用绝对或相对路径指定本地文件,而远程文件名应包含用户和主机规范。

scp提供了许多控制其行为各个方面的选项。最广泛使用的选项是:

  • -P- 指定远程主机 ssh 端口。
  • -p- 保留文件修改和访问时间。
  • -q- 如果您想抑制进度条和非错误消息,请使用此选项。
  • -C- 此选项强制scp在将数据发送到目标计算机时对其进行压缩。
  • -r- 这个选项告诉scp递归复制目录。

在你开始之前#

The scp命令依赖于ssh用于数据传输,因此需要 ssh 密钥或密码才能在远程系统上进行身份验证。

冒号(:)是如何scp区分本地和远程位置。

为了能够复制文件,您必须至少拥有源文件的读取权限和目标系统的写入权限。

复制在两个系统上共享相同名称和位置的文件时要小心,scp将覆盖文件而不发出警告。

传输大文件时,建议运行scp里面的命令screen or tmux会议。

在两个系统之间复制文件和目录scp #

使用以下命令将本地文件复制到远程系统scp命令#

要将文件从本地复制到远程系统,请运行以下命令:

scp file.txt remote_username@10.10.0.2:/remote/directory

Where file.txt是我们要复制的文件的名称,remote_username是远程服务器上的用户,10.10.0.2是服务器IP地址。这/remote/directory是将文件复制到的目录的路径。如果不指定远程目录,文件将被复制到远程用户主目录。

系统将提示您输入用户密码,然后传输过程将开始。

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 -P 2322 file.txt remote_username@10.10.0.2:/remote/directory

复制目录的命令与复制文件的命令非常相似。唯一的区别是您需要使用-r递归标志。

要将目录从本地复制到远程系统,请使用-r option:

scp -r /local/directory remote_username@10.10.0.2:/remote/directory

使用以下命令将远程文件复制到本地系统scp命令#

要将文件从远程复制到本地系统,请使用远程位置作为源,使用本地位置作为目标。

例如复制一个名为file.txt从具有 IP 的远程服务器10.10.0.2运行以下命令:

scp remote_username@10.10.0.2:/remote/file.txt /local/directory

如果您还没有设置无密码 SSH 登录到远程计算机时,系统会要求您输入用户密码。

使用以下命令在两个远程系统之间复制文件scp命令#

Unlike rsync,当使用scp您不必登录其中一台服务器即可将文件从一台远程计算机传输到另一台远程计算机。

以下命令将复制该文件/files/file.txt从远程主机host1.com到目录/files在远程主机上host2.com.

scp user1@host1.com:/files/file.txt user2@host2.com:/files

系统将提示您输入两个远程帐户的密码。数据将直接从一台远程主机传输到另一台远程主机。

要通过发出命令的计算机路由流量,请使用-3 option:

scp -3 user1@host1.com:/files/file.txt user2@host2.com:/files

结论#

在本教程中,您学习了如何使用scp复制文件和目录的命令。

您可能还想设置一个基于 SSH 密钥的身份验证无需输入密码即可连接到您的 Linux 服务器。

如果您经常连接到相同的系统,您可以通过在SSH 配置文件 .

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用SCP命令安全传输文件 的相关文章

  • 通过终端列出视频设备

    如何通过终端列出计算机的视频设备 有没有列出它们的命令 列出视频output设备 例如监视器 system profiler SPDisplaysDataType 这会产生如下所示的输出 Graphics Displays Intel HD
  • 使用 c 访问 /Private/etc

    这可能是一个简单的问题 但如何在 c 控制台应用程序中向用户 请求 系统 根权限 我需要写信给 Private etc 但我不能 这是针对 mac unix 的 我已经看到它被用在其他控制台命令中 例如当您运行以下命令 sudo Syste
  • 在终端中根据括号或圆括号(仅限顶级)分割文本文件

    我有几个文本文件 utf 8 我想在 shell 脚本中处理它们 它们的格式并不完全相同 但如果我只能将它们分解成可食用的块 我就可以处理它 这可以用 C 或 python 编程 但我不喜欢 编辑 我用 C 编写了一个解决方案 看我自己的答
  • 那么如何通过终端打开Android SDK Manager呢? [复制]

    这个问题在这里已经有答案了 我已经将 CD 放入终端中的 android 工具目录中 我尝试输入 android 并按回车键 我也尝试输入 android sdk 并按回车键 但 sdk 管理器不会出现 有什么解决方案或建议可以帮助我了解我
  • 使用 MacOS 终端从 .tar.xz 存档中提取具有文件扩展名的特定文件

    我有许多扩展名为的压缩档案 tar xz 据我所知 解压后所需的总大小约为 2TB 档案中有许多我想要的图像 有没有一种方法可以单独提取文件 例如带有扩展名的文件 jpg jpeg and gif从压缩档案中提取而无需提取每个文件 Than
  • 创建一个基本的 .bashrc 文件 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我没有 bashrc文件 我想创建一个 但是如何创建 基本的是什么 bashrc文件包含 我在Linux 薄荷 12 我想要一个 bashrc文件 因
  • 获取终端中可用线路的数量

    如何找到终端中的可用线路数量 最好以跨平台的方式 但欢迎任何建议 甚至特定于操作系统 终端的高度和长度可以使用以下公式找到os https docs python org 3 library os html querying the siz
  • zsh 更改提示输入颜色

    我想更改 zsh 中输入文本的颜色 我为每个命令键入的文本 示例 在user host gt ls 我想要ls 为黄色以从标准输出中脱颖而出 我知道我可以完成这个bash using export PS1 BIGreen u h w IYe
  • Term::ReadKey,原始模式下的非阻塞读取:检测到 EOF?

    当我将内容通过管道传输到程序中时 它似乎没有获得任何像 0x4 这样的字符来指示 EOF echo abc map cat saw a x61 saw b x62 saw c x63 saw x0A zzzbc C 我必须按 Ctrl C
  • SSH 每次都会询问密码

    我的私钥有一个恼人的问题 每次我想要clone or push通过终端或 Tower 应用程序中的 ssh 我必须输入我的密码 我什至删除并重新创建了 ssh 密钥 并在 Github 上设置了几次密钥 但看起来它的生命周期很短 几分钟后就
  • 具有 2 个不同 .pem 密钥的 2 个服务器之间的 scp 命令

    我想使用 scp 和 2 个不同的 pem 密钥将文件夹从服务器 A 传输到服务器 B 这是最好的方法吗 它是否真的有效 scp i Documents server1 pem r email protected cdn cgi l ema
  • 如何关闭 iTerm2 中的“滚动历史记录”

    我已经安装了新的 iTerm 2 它在顶部的黄色栏中询问我是否要启用鼠标功能 不幸的是 我已经不记得确切的句子了 一不小心我就同意了 现在 当我在 iTerm 中使用鼠标上的滚轮时 它不再向上滚动 而是触发命令历史记录 就像我按下了向上光标
  • paramiko 中的超时(python)

    我正在寻找一种为此设置超时的方法 transport paramiko Transport host port transport connect username username password password sftp param
  • psql 显示 ansi 彩色文本

    My psqlrc有以下选项 setenv LESS iMSx4 FXR setenv PAGER less pset pager always 我想要着色的 psql 输出是 x1B 35m x1B 0m x1B 35mr x1B 0m
  • VSCode 上的 Pipenv:为什么终端上不显示 (pipenv)?

    我正在 VSCode Bash 终端上设置 pipelinev 虚拟环境 但它没有显示 pipenv 这使得它非常混乱 当我使用Pycharm并让它配置pipenv环境时 它会自动显示 pipenv 在项目路径之后 所以很容易判断我是否在
  • 如何在Python中获取Linux控制台窗口宽度

    python 有没有办法以编程方式确定控制台的宽度 我的意思是一行中不换行的字符数 而不是窗口的像素宽度 Edit 寻找适用于 Linux 的解决方案 不确定为什么它在模块中shutil 但它在 Python 3 3 中出现了 看 查询输出
  • 如何 scp 到 Amazon s3?

    我需要将约 2TB 的备份文件发送到 S3 我想最轻松的选项是 Linux scp 命令 有困难 https stackoverflow com questions 5774808 s3cmd failed too many times使用
  • VS Code 刷新集成终端环境变量,无需重新启动/注销

    如果您在 Windows 上添加 更改某些环境变量 例如 PATH 即使重新启动 VS Code 后 它也不会在 VS Code 集成终端中可用 但是 如果您从 Windows 命令提示符 Powershell 打开该终端 它将具有这些新的
  • 我安装了 nvm n,现在我不断收到“dyld:错误的外部重定位长度”

    我使用 sudo 安装了 nvm n 并决定通过在我的系统上下载多个版本的节点来测试它 当我尝试在节点版本之间切换时 我不断收到 权限被拒绝 的消息 所以我决定也使用 sudo 命令来切换版本 就在那时 一切都崩溃了 我不断得到 dyld
  • VS Code 终端无法识别 PATH 变量

    我在 PATH 中添加了一个目录 但 VS Code 中的终端无法识别我尝试从该目录运行的命令 exe 终端使用 cmd 而不是 power shell 我缺少什么 重新启动我的计算机 它就工作了 显然 VS Code 无法识别这些更改

随机推荐

  • Python map() 函数(转换可迭代对象)

    The map Python 中的 function 是一个内置函数 用于将函数应用于可迭代对象 数组 列表 元组 字典 集合 中的每个项目并返回一个迭代器 这使得它对于转换可迭代数据非常有用 目录 hide 1 Python map 函数
  • 使用 matplotlib 在 Python 中进行 3D 绘图

    数据可视化就是这样一个领域 大量的库都是用 Python 开发的 在这些当中 Matplotlib是数据可视化最流行的选择 虽然最初是为了绘制二维图表而开发的 例如直方图 条形图 散点图 线图等 Matplotlib 还扩展了其功能以提供
  • Bash 脚本编写第 6 部分 – 创建和使用 Bash 函数

    在讨论 bash 函数之前 我们先讨论一下这种情况 编写 bash 脚本时 您会发现自己在多个地方使用相同的代码 如果您厌倦了在 bash 脚本中一次又一次地编写相同的代码行 那么最好编写一次代码块并在 bash 脚本中的任何位置调用它 b
  • Python PDF处理教程

    PDF 或便携式文档格式首先由 Adob e 推出 但现在由国际标准化组织 ISO 维护 并且它是一个开放标准 PDF 文件的一些主要组件是纯文本 按钮 表单 单选按钮 图像 音频 视频 签名和元数据 在 Python 中 我们可以执行不同
  • 使用 LRU 缓存提升您的 Python 代码

    LRU 缓存或 最近最少使用 缓存是一种缓存 当缓存达到其大小限制时 最近最少使用的条目将被丢弃 关键思想是通过重用以前的结果来加快对相同数据的后续请求 这种技术称为记忆化 在本教程中 我们将深入研究 LRU 缓存的概念 探索其底层机制 以
  • Python 数学函数(简单示例)

    在本教程中 您将了解 Python 数学函数mathPython 的模块 任何类型的项目都始终需要数学计算 在 Python 中 一些内置数学运算符不需要数学模块 例如加法 减法 乘法 除法 三角函数 正弦 余弦等 对数 指数或阶乘等高级运
  • Bash For 循环范围:简单指南

    在 Bash shell 中 for loop使您能够有效地迭代数字或字符序列 当涉及到定义序列时 范围就发挥了作用 本教程重点介绍 Bash 范围创建强大循环的能力 目录 hide 1 使用大括号 进行范围定义 2 基本数字序列 star
  • 网页设计趋势将持续存在

    第一个网站是纯文本网站 今天很难想象会有这样一个网站 第一个同时提供图片和文字的网站于 1993 年上线 blog hubspot com Lindsay Kolowich 2015 年 3 月 这些年来 网页设计取得了很大的发展和进步 为
  • 如何从 CentOS 7.7-7.0 升级 CentOS 7.8

    最新版本 CentOS 7 8 可供升级 所有 CentOS 7 7 7 6 7 5 7 4 7 3 7 2 7 1 和 7 0 用户都可以将系统升级到最新版本 所有使用 WHM cPanel 运行的用户都不需要执行任何操作 WHM cPa
  • 如何在 CentOS/RHEL 8/7/6 上安装 Angular CLI

    Angular是一个框架 库 资产和实用程序 它跟踪所有组件并定期检查其更新 本教程将帮助您在 CentOS 8 7 6 和 RHEL 8 7 6 Linux 操作系统上安装 Angular CLI 工具 第 1 步 安装 Node js
  • 在 Bash 中检查文件是否为空的 5 种方法

    在 Linux 中 空文件是大小为零字节的文件 这意味着该文件不包含任何数据 并且在文本编辑器中打开时没有任何内容 可以使用 touch 命令创建一个空文件 touch myfile txt 这将在当前目录中创建一个名为 myfile tx
  • 如何在 MySQL 中创建管理员用户

    在 MySQL 中管理数据库通常需要使用特权用户或超级管理员用户 他们拥有读取 写入 更新和管理数据库的所有权限 在 MySQL 中 这通常是 root 用户 但建议创建单独的超级管理员用户以实现更好的安全管理 本文将指导您如何在 MySQ
  • 如何在 Fedora 36/35/34 上安装 TeamViewer

    团队查看器是一款功能强大的远程桌面和文件共享应用程序 适用于大多数操作系统和移动设备 为了将 TeamViewer 的使用商业化 您必须购买许可证 您可以免费使用它 仅供个人使用 Teamviewer 的 RPM 包由官方团队构建 可以安装
  • 如何更改 PHP 会话超时

    作为 Web 开发人员 了解 PHP 会话超时对于构建安全可靠的 Web 应用程序至关重要 PHP 会话是一种跨多个页面存储用户信息的方式 会话超时是指会话在过期之前保持活动状态的持续时间 在本分步指南中 我们将引导您完成更改 PHP 会话
  • 如何在 Ubuntu、Debian 和 LinuxMint 上安装 Python 3.7

    在撰写本文时 Python 3 7 系列的最新稳定版本已可供安装 本文将帮助您在 Ubuntu 和 LinuxMint 操作系统上安装 Python 3 7 9 你可以拜访here阅读有关 Python 版本的更多信息 先决条件 保持软件包
  • 如何在 Ubuntu 16.04、14.04 上安装 Nginx、PHP 7 和 MySQL

    PHP 7 2 的最新主要版本已经发布 在速度和安全性方面进行了大量优化 所以你应该尝试这个版本来进行开发 本教程将帮助您在 Ubuntu 17 10 16 04 和 14 04 LTS 版本上安装 Nginx PHP 7 2 和 MySQ
  • 了解 Terraform 语法和配置文件

    Terraform 由 HashiCorp 开发 是一款因其在基础设施即代码 IaC 方面的强大功能而广为人知的工具 本综合指南旨在让您深入了解 Terraform 语法 特别关注配置文件 了解 Terraform 语法 Terraform
  • Fedora 26 发布,新功能及升级步骤

    Fedora 26 发布 最终的 Fedora 26 已发布于2017 年 7 月 11 日 Fedora 26有各种软件升级 安全补丁 该版本将与 GENOME 3 24 一起发布 您可以从以下位置下载 Fedora 26 预发行版 Be
  • 如何重命名 SQL Server 数据库

    Microsoft SQL Server 为您提供了多种重命名数据库的方法 您可以使用 SQL Server Management Studio 或运行 SQL 查询来重命名数据库 在重命名数据库之前 请记住 它可能会中断使用当前数据库名称
  • 如何使用SCP命令安全传输文件

    SCP 安全复制 是一个命令行实用程序 允许您在两个位置之间安全地复制文件和目录 With scp 您可以复制文件或目录 从本地系统到远程系统 从远程系统到本地系统 在本地系统的两个远程系统之间 当传输数据时scp 文件和密码都经过加密 因