如何使用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命令安全传输文件 的相关文章

  • 在Linux伪终端中执行从一个终端发送到另一个终端的字符串

    假设我有一个终端 其中 tty 的输出是 dev pts 2 我想从另一个终端向第一个终端发送命令并执行它 使用 echo ls gt dev pts 2 仅在第一个终端中打印 ls 有没有办法执行字符串 不 终端不执行命令 它们只是数据的
  • 在 Mac 上使用 JRE 打开 jar 文件

    我有一个 jar 文件 旨在通过命令行运行 我不打算在运行应用程序的机器上进行任何java开发 我的思考过程是 因此我应该只需要JRE而不是JDK 此外 JDK 大约是 JRE 的 4 倍 我不想下载它 在 Mac 上安装 JRE 时 它不
  • 从 pod 安装库时出现错误

    我收到未定义的方法squish for
  • Linux命令列出所有可用命令和别名

    是否有一个 Linux 命令可以列出该终端会话的所有可用命令和别名 就好像您输入 a 并按下 Tab 键一样 但针对的是字母表中的每个字母 或者运行 别名 但也返回命令 为什么 我想运行以下命令并查看命令是否可用 ListAllComman
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • 如何在 bash 上运行 MySQL 命令?

    以下代码在命令行上运行 mysql user myusername password mypassword database mydatabase execute DROP DATABASE myusername CREATE DATABA
  • 什么是 .un~ 文件或者为什么终端中的 Vim 会创建 .un~ 文件?

    我注意到我有一些以 un 例如我有一个 vividchalk vim un 但我不确定它是从哪里来的 看起来它们是我在终端中使用 Vim 时创建的 这些文件是什么 当我关闭正在编辑的文件时 可以让它们自行删除吗 当你编辑和保存文件时 Vim
  • SQLite:从命令行仅将模式转储到 .sql 文件中

    我正在尝试转储架构test db仅 即没有数据 到名为的文件中schema sql从 OS X 中的命令行 无需启动 sqlite3 我知道我能做到 sqlite3 open test db output schema sql schema
  • 设置 Git osxkeychain 错误

    我正在设置 Git 并且正在关注http lifehacker com 5983680 how the heck do i use github http lifehacker com 5983680 how the heck do i u
  • 使用 scp 从不同路径复制多个文件的智能方法[重复]

    这个问题在这里已经有答案了 我想知道一种简单的使用方法scp复制文件系统上不同路径中存在的文件和文件夹 SSH 目标服务器请求密码 但我无法将其放入配置文件中 我知道scp没有我可以从脚本提供的密码参数 所以现在我必须逐个复制每个文件或目录
  • 如何从终端启动 applescript.scpt 文件并传递术语/变量?

    我有一个苹果脚本 它可以执行以下操作 using terms from application Quicksilver on open theseitems repeat with aitem in theseitems display d
  • 减少每日状态表以仅包含状态更改

    我有一个包含 10 万以上用户的大型每日状态表 5 7 亿行 目前它位于 MySQL 或 CSV 中 该表包含三列 user id status 和 date 理想情况下 我希望将表缩减为一个新表 其中包含每个状态期间的 user id s
  • Dpkg:警告:包“x”的文件列表文件丢失;假设 Ubuntu 16.04 中当前没有安装包

    我使用 Ubuntu 16 04 和 lubunut 桌面环境 当我这样做时 我遇到了以下问题超过3天apt get upgrade 我不知道问题是什么以及如何解决 注意 3天前我尝试升级Linux header 4 4 66 但显示错误
  • 将文本粘贴到 Macintosh 上的 emacs 中

    我使用的是 Macintosh 并且使用 终端 作为我的 shell 当我从任何窗口复制文本 通过鼠标拖动 然后鼠标右键菜单 gt 复制 然后将文本 鼠标右键 gt 粘贴 粘贴到运行 emacs 的终端中时 它不会充当粘贴 相反 它就像输入
  • 如何为 Visual Studio 命令提示符创建批处理文件

    我想创建一个批处理文件Visual Studio 2008 x64 Cross Tools Command Prompt要在我的电脑上连续执行某些操作 场景如下 svn update delete some files MSBuild My
  • 如何清理 Runtime.exec() 中使用的用户输入?

    我需要通过命令行调用自定义脚本 这些脚本需要很少的参数并在 Linux 机器上调用 当前版本容易出现各种shell注入 如何清理用户给出的参数 参数包括登录名和路径 Unix 或 Windows 路径 用户应该能够输入任何可能的路径 该路径
  • git pull origin master 返回致命错误:无效的 refspec

    问题是这样的 每当我这样做时 git pull https github com username reponame github io git 接下来是网址 我没有遇到任何问题 但是当我这样做时 git pull origin maste
  • OSX 终端在启动时无法识别 ~/.bashrc 和 ~/.bash_profile

    OSX 识别我的 bashrc 和 bashprofile 的唯一方法是我在终端的首选项中指定启动时要定位的文件 他们没有按应有的方式工作有什么原因吗 这是我的 bashrc 的内部 s HOME rvm scripts rvm sourc
  • 让 Emacs 尊重我的默认 shell + 选项

    我正在尝试让我的 Emacs shell 模仿我的标准终端会话 基本上我希望它尊重相同的路径以及命令提示符 到目前为止我有几个问题 找不到 PATH 下面是我正在使用的修复程序 我尝试过另一个修复 到处都是 ascii 颜色代码 我的 mw
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统

随机推荐

  • 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 文件和密码都经过加密 因