linux 命令之 scp 安全拷贝

来源:互联网 发布:程序员考试等级 编辑:程序博客网 时间:2024/05/29 13:59

一.scp介绍

一般情况,本地网络跟远程网络进行数据交包,或者数据迁移,常用的有三种方法,一是ftp,二是wget /fetch 三是,rsync 

大型数据迁移用rysync,其次用fetch/wget ,最次是ftp,最慢是ftp.

scp   --secure copy (remote file copy program) 安全拷贝,远程文件拷贝

scp 在网络主机之间进行文件的拷贝.它使用ssh进行文件传输. 并且使用和ssh相同的认证.

scp如果需要认证,将会询问密码或者密码短语

本地文件的名字可以使用明确的绝对路径或者使用相对路径.

scp 允许在两个远程主机之间进行文件传输.

二.选项说明

-1  使用ssh1 协议

-2 强制使用ssh2 协议

-3 通过本地主机对两个远程主机进行拷贝

-4 强制scp使用IPv4地址

-6 强制scp使用IPv6地址

-B 使用分批处理模式.期间不需要使用口令

-C 支持压缩

-c cipher 使用cipher加密数据传输

-F 使用指定的ssh_config文件来配置ssh,该参数直接传递给ssh.

-i identity_file  从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。    
-l limit  限定用户所能使用的带宽,以Kbit/s为单位。     
-o ssh_option  如果习惯于使用ssh_config(5)中的参数传递方式,   
-P port  注意是大写的P, port是指定数据传输用到的端口号   

-r 迭代拷贝整个文件夹

-p 保存原始文件的修改时间,访问时间和访问权限
-S program  指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项


三.案例说明

说明一下,我使用的是局域网内,一个ip为:192.168.1.101,一个是192.168.1.103

操作的这台机器是第一个.

1.  scp -r 192.168.1.103:/home/fengfulee/python /programming

之后会询问root密码.

解释:将103主机上/home/fengfulee/python 目录中的内容 拷贝到 101(本机)的/python目录中.

成功之后,在我本机的/programming目录中将会出现一个python目录.

2.scp fengfulee@192.168.1.103:/home/fengfulee/abc.txt /

说明:使用103主机的普通账号对内容进行拷贝到本机的/目录中

这里要注意一点,我在101 上使用的是root账户.拷贝到本机的文件所有者将会自动转为root所有.不再是远程机器上的所有者.

如果要保持一致性,可以使用-p命令.

附带说明:这里我做了一个补充.

我使用root账户在103的/home/fengfulee/ 的目录下建立了一个abcd.txt 将其权限改为644 ,

再次调用scp命令.是可以进行复制的.

但是如果我将权限改为640 发现无法复制(fenguflee这个账户不是root组的成员),

没有可读的权限.所以无法复制.这是可以理解的.该文件有可读的权限,那么就是可以远程复制的.不然将会是一个系统漏洞了吧.

3.scp dcba.txt  fengfulee@192.168.1.103:/home/fengfulee

这里的dcba.txt同样使用root账户创建. 远程/home/fengfulee 目录中出现了dcba.txt文件.权限变为fengfulee.

这个也很好理解,就是本地root账户进行拥有者权限转移. 同样的,可以使用-p命令来保持文件属性的一致性.

4配置自己的103 主机的/etc/ssh/sshd_config 文件,修改Port端口号为22222

然后在101 上面使用scp

scp -P 2222 192.168.1.103:/home/fengfulee/abc.txt /


其实还有很多的内容,以后再补充吧.

0 0
原创粉丝点击