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

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

[[email protected] ~]# scp --help

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

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

          [[[email protected]]host1:]file1 ... [[[email protected]]host2:]file2

[[email protected] ~]#

语法详解:

-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:指定一个加密程序。

[email protected]      用户

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/ [email protected]:/root

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

/usr/local/tomcat: not aregular file

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

scp -P 21386 -r/usr/local/tomcat/ [email protected]:/root/tomcat1

上传压缩文件到node2

scp -P 21386 -r /usr/local//[email protected]:/root

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

scp -P 21386 [email protected]:/root/tomcat  /root

scp -P 21386 [email protected]:/root/mysql.tar.gz /root

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

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

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

一路回车即可!

ssh-copy-id  -i.ssh/id_rsa.pub  [email protected]

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

测试:

ssh –help

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

   

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

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

 

scp -i Identity  -P21386mysql.tar.gz [email protected]:/home/node2

 

scp -i Identity -P21386  -r tomcat2/ [email protected]:/home/node2

 

scp -i Identity -P21386  -r tomcat [email protected]:/home/node2

 

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

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

QQ:1145507435

邮箱:[email protected]

时间: 2024-10-13 10:05:38

scp 是我小看了你---基于密钥传输!的相关文章

ssh   sshd   scp   基于密钥认证登陆 双机互信

telnet :远程登陆 TCP/23 远程认证是明文的 :数据传输是明文的:不实用 ssh:Secure SHell TCP/22    协议 v1 v2  v1基本不使用的 实现了将认证过程加密 Openssh:是ssh的开源版 ssh不仅是一个软件,也是一种协议 ssh加密认证的机制 基于口令:默认为口令 基于密钥:事先在服务器端的用户里放入客户端的公钥,然后链接过来的时候对暗号 netstat -tnl  查看服务器端打开了等待别人访问的服务 LISTEN监听 ssh 和sshd的配置文

openssh远程登录服务器端和基于密钥的认证机制

ssh服务的最佳实践方案:1.更换服务端口,不要使用默认的22号端口:2.禁止使用sshv1:3.合理的设置登录用户的黑名单和白名单:4.设置空闲会话的超时时间,将其改的短一些:5.需要利用防火墙来配合设置ssh的安全访问规则:6.监听固定的IP地址而不是0.0.0.0:7.如果必须使用口令认证机制,则需要使用足够复杂的密码:~]# tr -dc A-Za-z0-9 < /dev/urandom | head -c 30 | xargs~]# openssl rand -base64 30 |

基于密钥策略的属性加密算法的软件实现1200

基于密钥策略的属性加密算法的软件实现(KPABE)aminadab 要求 基于密钥策略的属性加密算法的软件实现:KPABE 时间:3天: 注释占代码量30%: 4.流程: 设置 这是一个随机算法,除了隐藏的安全参数没有输入.输出公开参数PK和一个主密钥MK. 加密 这是一个随机算法,输入一个消息m,一组属性γ,公开参数PK.输出密文E. 密钥生成 这是一个随机算法,输入一个访问结构A,主密钥MK,公开参数PK.输出一个解密密钥D. 解密 算法输入:基于属性组γ加密的密文E,对应访问结构A的解密密

基于密钥的认证机制(ssh)

网络中的两台服务器需要经常进行通信,而频繁的输入账号和密码既繁琐又不安全,所以需要使用基于密钥的认证,这种使用在服务器集群配置中非常的常用.下面以CentOS服务器系统为例简单介绍下配置方法(服务器必须安装SSH). 1.客户端首先生成一对密钥,包括公钥和私钥     ssh-keygen -t rsa 生成的一对密钥存放在当前用户目录下隐藏目录.ssh中,私钥叫id_rsa,公钥为id_rsa.pub 2.将生成的公钥上传到远程服务器那个需要登陆的用户家目录下隐藏目录.ssh中     ssh

基于密钥库和数字证书的加密解密和签名验证操作

package com.szzs; import java.io.FileInputStream; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.PrivateKey; import java.security.PublicKey; import java.security.Signature; import java.security.cert.Certif

如何在 Linux 中配置基于密钥认证的 SSH

什么是基于 SSH 密钥的认证? 众所周知,Secure Shell,又称 SSH,是允许你通过无安全网络(例如 Internet)和远程系统之间安全访问/通信的加密网络协议.无论何时使用 SSH 在无安全网络上发送数据,它都会在源系统上自动地被加密,并且在目的系统上解密.SSH 提供了四种加密方式,基于密码认证,基于密钥认证,基于主机认证和键盘认证.最常用的认证方式是基于密码认证和基于密钥认证. 在基于密码认证中,你需要的仅仅是远程系统上用户的密码.如果你知道远程用户的密码,你可以使用 ssh

linux net通信 基于密钥

配置SSHD服务 SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理 Linux 系统的首选方式.在此之前,一般使用 FTP 或 Telnet 来进行远程登录.但是因为它们 以明文的形式在网络中传输账户密码和数据信息,因此很不安全,很容易受到黑客发起的中 间人攻击,这轻则篡改传输的数据信息,重则直接抓取服务器的账户密码. 想要使用 SSH 协议来远程管理 Linux 系统,则需要部署配置 sshd 服务程序.sshd 是基于 SSH 协议开发的一款远程管

基于文件传输的UDP协议分析(1)

网络通信与数据交换已经成为现代软件必备的基础功能. 目前公司上下位机的网络通信均采用TCP/ UDP协议进行数据交换和控制.这种低层次的网络通信协议在小数据量,少互交的领域有着较大的优势.但是随着网络功能需求的日趋旺盛,TCP/UDP协议日渐无法满足需求,其弊端日渐明显 *TCP/UDP通信编程可分为: 1  通信控制层 通信控制层负责网络的配置,连接,发送数据, 接受数据响应, 中断等服务 2数据处理层 数据处理层主要负责数据的封包,解包,校验等工      作.简称: "数据协议的程序化过程

linux主机间基于密钥认证

1.生成公钥私钥 ssh-genkey -t rsa 2.复制公钥到其他主机 ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected] 该命令实际是将公钥放到~/.ssh/authorized_keys文件中文件中,也可以使用 将公钥复制到对方主机scp /root/.ssh/id_rsa.pub 192.168.171.101:/tmp 在另外主机上cat /tmp/id_rsa.pub ~/.ssh/authorized_keys即可 如果