专栏首页Web技术研发Linux系列 | scp 两台主机之间加密传送文件

Linux系列 | scp 两台主机之间加密传送文件

简介

scp是 secure copy 的缩写,相当于cp命令 + SSH。它的底层是 SSH 协议,默认端口是22,相当于先使用ssh命令登录远程主机,然后再执行拷贝操作。

scp主要用于以下三种复制操作。

  • 本地复制到远程。
  • 远程复制到本地。
  • 两个远程系统之间的复制。

使用scp传输数据时,文件和密码都是加密的,不会泄漏敏感信息。

基本语法

scp的语法类似cp的语法。

$ scp source destination

上面命令中,source是文件当前的位置,destination是文件所要复制到的位置。它们都可以包含用户名和主机名。

$ scp user@host:foo.txt bar.txt

上面命令将远程主机(user@host)用户主目录下的foo.txt,复制为本机当前目录的bar.txt。可以看到,主机与文件之间要使用冒号(:)分隔。

scp会先用 SSH 登录到远程主机,然后在加密连接之中复制文件。客户端发起连接后,会提示用户输入密码,这部分是跟 SSH 的用法一致的。

用户名和主机名都是可以省略的。用户名的默认值是本机的当前用户名,主机名默认为当前主机。注意,scp会使用 SSH 客户端的配置文件.ssh/config,如果配置文件里面定义了主机的别名,这里也可以使用别名连接。

scp支持一次复制多个文件。

$ scp source1 source2 destination

上面命令会将source1source2两个文件,复制到destination

注意,如果所要复制的文件,在目标位置已经存在同名文件,scp会在没有警告的情况下覆盖同名文件。

用法示例

(1)本地文件复制到远程

复制本机文件到远程系统的用法如下。

# 语法
$ scp SourceFile user@host:directory/TargetFile

# 示例
$ scp file.txt remote_username@10.10.0.2:/remote/directory

下面是复制整个目录的例子。

# 将本机的 documents 目录拷贝到远程主机,
# 会在远程主机创建 documents 目录
$ scp -r documents username@server_ip:/path_to_remote_directory

# 将本机整个目录拷贝到远程目录下
$ scp -r localmachine/path_to_the_directory username@server_ip:/path_to_remote_directory/

# 将本机目录下的所有内容拷贝到远程目录下
$ scp -r localmachine/path_to_the_directory/* username@server_ip:/path_to_remote_directory/

(2)远程文件复制到本地

从远程主机复制文件到本地的用法如下。

# 语法
$ scp user@host:directory/SourceFile TargetFile

# 示例
$ scp remote_username@10.10.0.2:/remote/file.txt /local/directory

下面是复制整个目录的例子。

# 拷贝一个远程目录到本机目录下
$ scp -r username@server_ip:/path_to_remote_directory local-machine/path_to_the_directory/

# 拷贝远程目录下的所有内容,到本机目录下
$ scp -r username@server_ip:/path_to_remote_directory/* local-machine/path_to_the_directory/
$ scp -r user@host:directory/SourceFolder TargetFolder

(3)两个远程系统之间的复制

本机发出指令,从远程主机 A 拷贝到远程主机 B 的用法如下。

# 语法
$ scp user@host1:directory/SourceFile user@host2:directory/SourceFile

# 示例
$ scp user1@host1.com:/files/file.txt user2@host2.com:/files

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

配置项

(1)-c

-c参数用来指定文件拷贝数据传输的加密算法。

$ scp -c blowfish some_file your_username@remotehost.edu:~

上面代码指定加密算法为blowfish

(2)-C

-C参数表示是否在传输时压缩文件。

$ scp -c blowfish -C local_file your_username@remotehost.edu:~

(3)-F

-F参数用来指定 ssh_config 文件,供 ssh 使用。

$ scp -F /home/pungki/proxy_ssh_config Label.pdf root@172.20.10.8:/root

(4)-i

-i参数用来指定密钥。

$ scp -vCq -i private_key.pem ~/test.txt root@192.168.1.3:/some/path/test.txt

(5)-l

-l参数用来限制传输数据的带宽速率,单位是 Kbit/sec。对于多人分享的带宽,这个参数可以留出一部分带宽供其他人使用。

$ scp -l 80 yourusername@yourserver:/home/yourusername/* .

上面代码中,scp命令占用的带宽限制为每秒 80K 比特位,即每秒 10K 字节。

(6)-p

-p参数用来保留修改时间(modification time)、访问时间(access time)、文件状态(mode)等原始文件的信息。

$ scp -p ~/test.txt root@192.168.1.3:/some/path/test.txt

(7)-P

-P参数用来指定远程主机的 SSH 端口。如果远程主机使用默认端口22,可以不用指定,否则需要用-P参数在命令中指定。

$ scp -P 2222 user@host:directory/SourceFile TargetFile

(8)-q

-q参数用来关闭显示拷贝的进度条。

$ scp -q Label.pdf mrarianto@202.x.x.x:.

(9)-r

-r参数表示是否以递归方式复制目录。

(10)-v

-v参数用来显示详细的输出。

$ scp -v ~/test.txt root@192.168.1.3:/root/help2356.txt

本文分享自微信公众号 - 万少波的播客(Tinywanblog),作者:Tinywan

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-01-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 你知道两台Linux之间如何传输文件吗?

    不同的Linux主机之间想要实现文件相互拷贝的方法有三种: 第一种:ftp,也就是其中一台Linux安装ftpServer,这样可以另外一台使用ftp的clie...

    软测小生
  • 说说SSH、SCP和SFTP的那些事儿

    SSH、SCP和SFTP都是SSH软件包的组成部分。 SSH 是 Secure Shell 的缩写,由 IETF 的网络小组(Network Working G...

    企鹅号小编
  • Linux命令(30)——scp命令

    scp(secure copy)命令是一个基于SSH安全的进行远程文件拷贝命令,用于在Linux下进行远程拷贝文件,和它类似的命令有cp,不过cp只是在本机进行...

    Dabelv
  • 【linux】常用命令之scp命令

    今天需要在两个服务器之间进行数据copy,但是居然忘了linux命令,于是这里记录下,加深记忆!

    zenRRan
  • SSH原理常见应用升级及端口转发

    命令 -L localport:remotehost:remotehostport sshserver

    常见_youmen
  • 001.hadoop及hbase部署

    #下载官方地址:http://www.apache.org/dyn/closer.cgi/hadoop/common/

    木二
  • 配置各台虚拟机之间免秘钥登录

    /root/.ssh目录原先不存在,使用ssh命令登录自身后就可以自动创建.ssh目录

    CoderJed
  • 小林带你盘一盘,常用的网络命令

    服务器一般都是命令页面,不像 windows 有图形页面点点鼠标就好,所以掌握些基本的 Linux 命令是很有必要的,不然就无法操作 Linux,更体会不到 L...

    小林coding
  • Linux工作/面试常用命令大全详解

    管道符“|”将两个命令隔开,左边命令的输出作为右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输...

    JavaEdge
  • Linux ssh命令详解,连ssh命令都不了解就别说自己会用Linux了

    ssh相当于windows上的远程桌面连接,但没有桌面,只有文字终端。ssh是许多Linux使用者入门时必学的一个命令。借助ssh,开发人员可以很方便地连接远程...

    北游
  • Linux配置实现免密钥登录过程解析

    在linux中,可以通过ssh命令来登录另一台服务器。打开两台linux虚拟机,一台Linux01的ip为192.168.226.128,另一台linux02为...

    砸漏
  • scp命令

    scp命令用于Linux之间复制文件和目录,scp是secure copy的缩写,是Linux系统下基于ssh登陆进行安全的远程文件拷贝命令,使用scp可以实现...

    WindrunnerMax
  • 从零开始Hadoop集群环境搭建

    本篇文章将从头开始介绍Hadoop大数据平台的一系列搭建工作,主要是搭建的具体操作步骤,思想方面涉及甚少,可以自行补充 虚拟机下载安装 我使用的是VMware...

    听城
  • Linux的ssh命令

    SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP...

    狼啸风云
  • 第二章 SSH服务

    在SSH之前,一直使用telnet进行远程连接(端口为TCP:23),但由于telnet在进行数据传输时是明文传输,不安全,因此采用加密传输的ssh(端口为T...

    晓天
  • linux(十)配置ssh免密登录实现

    知道ssh的朋友应该知道它是用来干什么的,如果你不知道什么是ssh远程登录的话,可以去看一下我的上一篇博客,关于linux的网络基础的知识。 备注:ssh是用于...

    用户1195962
  • linux系统下命令cp、scp具体用法

    herve
  • shell 常用命令

    expect 命令是用来实现自动化交互通信的,比如当你在脚本中通过某些命令登录、连接、上传、下载等和远程服务器的交互时,可能需要让你输入一些账号、密码等信息

    请叫我大苏
  • 进阶指南|三个月大数据工程师学习计划

    本文来自作者在GitChat(ID:GitChat_Club)上的精彩分享,CSDN独家合作发布。 申明:本文旨在为普通程序员(Java程序员最佳)提供一个入门...

    CSDN技术头条

扫码关注云+社区

领取腾讯云代金券