scp 是我小看了你---基于密钥传输!

原创 2016年05月30日 17:47:41

原因:公司用的是基于密钥登陆,虽然有防火墙等设备,而且不允许root直接登陆和不允许密码登陆。由于公司的网不好,有一次需要拷贝一次2个多G的数据到别的服务器。我当时想的就是scp(虽然也有其它命令工具)但是,我却忘记了现在不允许密码登陆。虽然有其它方式(比如lrzsz或者winscp ftp等),但是如果先下载再上传必然需要太多时间。毕竟走服务器的局域网才是最快,要是走公司,然后再上传,那就太麻烦了。于是看看scp --help发现有一个-i 参数。所以是支持密钥的方式的。仔细研究一番,确实好用,于是,自己写了个文档,和大家分享一下。

[root@node1 ~]# scp --help

usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-iidentity_file]

           [-l limit] [-ossh_option] [-P port] [-S program]

          [[user@]host1:]file1 ... [[user@]host2:]file2

[root@node1 ~]#

 

语法详解:

-1246BCpqrv:                     

 -1 强制scp 用协议1

-2 强制scp 用协议2

-4 强制scp用IPV4的网址

-6 强制scp用IPV6的网址

-B 选择批处理模式(防止输入密码)

-C 允许压缩。 标注-C到ssh(1)来允许压缩

-p指定修改次数,连接次数,还有对于原文件的模式

-q把进度参数关掉

-r递归的复制整个文件夹

-v详细方式显示输出

-c cipher:选择cipher来加密数据传输。

-F ssh_config: 指定ssh的配置文件    

-I identity_file:   选择被RSA认证读取私有密码的文件。             

-I limit:限制传输带宽,也就是速度 用Kbit/s的速度                    

-o ssh_option:可以把ssh_config中的配置格式传到ssh中。                  

-P port:   指定ssh端口

-S program:指定一个加密程序。

user@      用户

host1      主机(可以是ip,也可以是域名)

测试环境:

node1:192.168.1.220  centos6.6mini

node2:192.168.1.221  centos6.6mini

  

node1:

   上传文件夹到node2;

scp -P 21386 -r/usr/local/tomcat/ root@192.168.1.221:/root

wKiom1dFFULDlkhzAAMQspx2SKc990.jpg

注意:如果不加-r,会报错

/usr/local/tomcat: not aregular file

 

如果需重命名,可在远程主机指定位置和文件名即可

scp -P 21386 -r/usr/local/tomcat/ root@192.168.1.221:/root/tomcat1

wKiom1dFFY2xyg1IAABHz7GB0L8714.png

wKioL1dFFqWSWhNYAAHOEQ0dVjU827.jpg

上传压缩文件到node2


wKioL1dFFrzS-XBwAACgOxpQ4Pc736.png

scp -P 21386 -r /usr/local//root@192.168.1.221:/root

wKioL1dFFtCQxGY5AABYv1c6lV4370.pngwKioL1dFFuvzRm0oAAAo5xECXBM249.png

将node2文件目录或者压缩文件传输到node1。

scp -P 21386 -rroot@192.168.1.221:/root/tomcat  /root

wKiom1dFFg6h3E6zAABNGq3j0R0715.pngscp -P 21386 -rroot@192.168.1.221:/root/mysql.tar.gz /root

wKiom1dFFjexabdnAAMW62UxAps453.jpg

当然,你也可以从node2上进行操作。

由于上面的操作,总是需要密码,那么接下来做一个ssh互信。

wKiom1dFFl6idJ3-AAAf8ycTwUE687.png

由于我改了默认端口,所以先改回默认22的端口。

wKioL1dFF2rQ8oR7AAM6UQIYvVY502.jpg

一路回车即可!

ssh-copy-id  -i.ssh/id_rsa.pub  root@192.168.1.221

wKioL1dFF5GQwvJ5AAQNSdek2rs740.jpg

如果需要dns,事先做好dns,或者hosts,再做ssh互信。

 测试:

ssh –help

wKiom1dFFsDR699-AANDEJv9ayc316.jpg



wKioL1dFF8zzv1APAAOw5T6dSP0441.jpg

做到上面,基本的ssh已经没有问题了。但是,生产环境,用密钥认证的也不少,那么下面做一个基于密钥验证的。并且禁止root登陆和密码登陆(操作略,过于简单)

 wKioL1dFF-vSJRVSAAIqSquu_VU470.jpg  

删除node2的数据,将node1上的数据,传输到node2上。

wKioL1dFGATQOeQ8AAAzTc7GcOQ250.png

由于不允许密码登陆,和不允许root直接登陆。现在是基于密钥登陆,然后切换到root,因此,现在只有用密钥的方式用scp。而且只能上传到密钥用户家目录下。除非在指定的目录相应用户有权限。不过,就是一个scp而已,实现目的即可。

 

scp -i Identity  -P21386mysql.tar.gz node2@192.168.1.221:/home/node2

 

scp -i Identity -P21386  -r tomcat2/ node2@192.168.1.221:/home/node2

 

scp -i Identity -P21386  -r tomcat node2@192.168.1.221:/home/node2

 

注意:回车提示输入密码。


wKioL1dFGCfRAa4kAAN40Eaa43U297.jpg


一个小小的经验,分享给大家。希望和大家多多交流和分享。

QQ:1145507435


邮箱:renzhiyuan666666@vip.qq.com
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux服务器 scp 不需要密码配置与密钥转换(id_rsa->ppk)

Linux服务器 scp 不需要密码配置 案例: ▲服务器A对服务器B、C进行ssh连接,免输入密码     或 ▲服务器A向服务器B、C复制文件(源文件在服务器A上),免输入密码 主机A:19...
  • catoop
  • catoop
  • 2012年12月11日 23:50
  • 12122

scp 不输入密码

1.在机器Client上root用户执行ssh-keygen命令,生成建立安全信任关系的证书。        [root@Clientroot]# ssh-keygen -b 1024 -t r...

几种方法来实现scp拷贝时无需输入密码

多种方法实现scp命令时无需输入远端的用户密码。
  • nfer_cn
  • nfer_cn
  • 2015年01月15日 09:05
  • 23249

linux中scp保存密钥信息的文件

linux中scp保存密钥信息的文件是~/.ssh/known_hosts 如果原来某个ip的密钥保存了,对方重新安装了,密钥就会改变,此时使用scp就会有这样的提示: @@@@@@@@@@@@@...

linux下scp使用秘钥

今天我从hadoop上同步一个文件到本地,使用到scp的一个参数-i来加载秘钥,但是执行时出现了错误:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@...
  • At_Once
  • At_Once
  • 2015年05月07日 10:12
  • 791

scp本地和远程文件上传/下载

将本地文件上传到服务端 ssh scp -p 22 /home/lnmp.gz root@ip:/usr/local/src/lnmp.gzDOSC:\workspace\zjwk\shop-plu...

linux命令——scp 两台linux机器间文件或目录传输

原文http://www.cnblogs.com/kongzhongqijing/p/3543304.html 介绍scp是secure copy的简写,是linux系统下基于ssh登陆进行安全的远...

ssh-keygen实现基于SSH密钥的SSH、SCP无密码登录

SSH为远程登录及会话提供了安全保障,通过ssh-keygen创建SSH 密钥可以实现本地机与服务器,或两台服务器之间的无密登录。 操作准备本地机操作服务器操作无密码登录 1.操作准备 简单的说,通...

linux scp命令参数及用法详解--linux远程复制拷贝命令使用实例

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

Linux系统ssh和scp命令

如果ssh的端口是22,那么可以不用指定-p或-P选项。 1.ssh Linux使用ssh命令登陆Linux服务器: ssh -l root -p 188 192.168.1.2 ssh ...
  • gzshun
  • gzshun
  • 2013年05月14日 10:28
  • 19456
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:scp 是我小看了你---基于密钥传输!
举报原因:
原因补充:

(最多只允许输入30个字)