ssh免密码登录之分发密钥

1、ssh免密码登录

密码登录和密钥登录有什么不同?

密码登录(口令登录),每次登录都需要发送密码(ssh)

密钥登录,分为公钥和私钥,公钥相当于锁,私钥相当于钥匙

1.1 生成密钥对(公钥和私钥)

ssh-keygen

ls -a .ssh/        查看公钥和私钥ls -a .ssh/

1.2 发送公钥到要登录的机器(客户端)

ssh-copy-id root@10.0.0.31

authorized_keys存放公钥的文件

1.3 测试免密钥登录

ssh root@10.0.0.31

ssh -v root@10.0.0.31    显示ssh连接过程

 

2、远程只能用密钥登录

2.1 配置免密码登录

2.2 修改/etc/sshd/sshd.conf的66行

PasswordAuthentication no

对称加密:加密方法和解密一致

非对称加密:公钥和私钥,公钥和私钥在一起完成(虎符)

 

3、任意两台机器实现互相密钥登录的方法

方法1:次数较多

分别在每台机器上生成密钥对ssh-keygen

将公钥分别发送给其他机器(较麻烦)ssh-copy-id root@10.0.0.31

方法2:次数较少

在一台机器上生成密钥对ssh-keygen

在已登录的状态下将公钥发送给自己    ssh-copy-id root@10.0.0.41

将.ssh目录发送到其他机器 scp -rp .ssh root@10.0.0.8:~

-r    拷贝整个目录

-p    保持属性

 

4、免密码登录应用

免密码登录可以在不登录到其他机器的情况下在其他机器上执行命令,批量执行多台机器的命令

for n in 31 7 8;do ssh root@10.0.0.$n "hostname";done

for n in 7 8 31 41;do ping 172.16.1.$n -c2;done

 

5、ssh免密码登录之分发密钥

利用expect解决非交互问题

管理N台服务器的时候,普通的分发密钥方法会比较繁琐

5.1 一键生成密钥对

ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -P ''

ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -P ''

-t指定要创建的密钥类型

-f指定密钥文件名

-q安静模式

-P提供(旧)密语

检查生成的密钥对

[root@backup ~]# ll .ssh/

total 8

-rw------- 1 root root 1675 Apr 27 17:18 id_dsa

-rw-r--r-- 1 root root 393 Apr 27 17:18 id_dsa.pub

5.2 将密钥对发送给自己

ssh-copy-id root@10.0.0.41

5.3 安装ecpect

yum install expect –y

5.4 expect脚本

[root@backup scripts]# cat send_pub.sh

#!/bin/bash

for n in 7 8 31;

do

expect send_pub.exp 10.0.0.$n        #执行脚本并使其获取IP参数

done

[root@backup scripts]# cat send_pub.exp

#!/usr/bin/expect

#set timeout 20         #设置超时时间,,默认为10秒,这里注释掉了

set IP [lindex $argv 0]        #获取参数IP

spawn ssh-copy-id root@$IP        #监控执行的命令    spawn标签用于expect脚本中,实现交互

expect "(yes/no)?"        #当遇到(yes/no)?情况时

send "yes\r"            #输入yes并回车

expect "password:"        #当遇到password:情况时

send "123456\r"        #输入密码并回车

interact                #跳出控制台

执行send_pub.sh即可批量给另外三台机器分发密钥

5.5 检查结果

ssh登录到其他机器,是否能直接登录

 

6、免密码分发密钥两两可登录

在5中通过一台机器批量分发密钥到其他机器实现免密钥登录到其他机器,这里进行升级批量分发密钥实现两两可免密钥登录

[root@backup scripts]# cat yijian.sh

#!/bin/bash

###NO.1

ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -P ''        #一键生成密钥对

 

###NO.2

for n in 41 31 7 8;

do

expect key_self.exp 10.0.0.$n        #执行脚本并使其获取IP参数

done

 

###NO.3

for n in 31 7 8;

do

scp -rp /root/.ssh root@10.0.0.$n:/root        #将.ssh下的所有文件发送到其他机器

done

[root@backup scripts]# cat key_self.exp

#!/usr/bin/expect

#set timeout 20         

set IP [lindex $argv 0]        

spawn ssh-copy-id root@$IP        

expect "(yes/no)?"

send "yes\r"

expect "password:"        

send "123456\r"    

interact        

执行yijian.sh即可实现目标

 

7、expect脚本应用

利用expect监控passwd命令

expect passwd.exp 旧密码 新密码    执行即可实现passwd非交互

[root@backup scripts]# cat passwd.exp

#!/usr/bin/expect

set old [lindex $argv 0]        #获取参数旧密码

set new [lindex $argv 1]        #获取参数新密码

spawn passwd

expect "(current) UNIX password:"

send "$old\r"

expect "New password:"

send "$new\r"

expect "Retype new password:"

send "$new\r"

interact

 

博主原创文章,转载请务必注明出处

ssh免密码登录之分发密钥的更多相关文章

  1. Xshell配置ssh免密码登录-密钥公钥(Public key)与私钥(Private Key)登录【已成功实例】

    本文转自https://blog.csdn.net/qjc_501165091/article/details/51278696 ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口 ...

  2. 配置ssh免密码登录设置后还是提示需要输入密码

    工作之余搭建了一个集群测试,配置了ssh免密码登录以后  ,所有的ssh-copy-id 密钥也都分发了 ,各项配置也没有问题,但是使用ssh进行免密登录时,没有报错,但是要输入被ssh主机的登录密码 ...

  3. ssh免密码登录机器(使用公钥和秘钥进行加密来实现)

    ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 登录的原理: 有机器A(192.168.1.155),B(192.168.1. ...

  4. 如何配置ssh免密码登录

    [TOC] 如果你在管理一堆unix机器,每次登录都要输入密码是挺烦的事情,一方面为了安全我们一般不会将所有机器的密码都设置成一样,另一方面就算一样每次都输入一遍也很麻烦. 这种情况下我们一般是用ss ...

  5. Linux下SSH免密码登录

    转自:http://haitao.iteye.com/blog/1744272 ssh配置 主机A:10.0.5.199 主机B:10.0.5.198 需要配置主机A无密码登录主机A,主机B 先确保所 ...

  6. 配置Ssh免密码登录

    配置Ssh免密码登录 一个master节点,两个client节点(client1.client2) 1.所有节点创建hadoop用户,并设置密码 以root账号登录: useradd hadoop p ...

  7. [Hadoop] - SSH免密码登录

    在安装hadoop之前需要进行ssh免密码登录,ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以Redhat为例. 我这里只采用一台机器A(10. ...

  8. Hadoop集群搭建过程中ssh免密码登录(二)

    一.为什么设置ssh免密码登录 在集群中,Hadoop控制脚本依赖SSH来执行针对整个集群的操作.例如,某个脚本能够终止并重启集群中的所有守护进程.所以,需要安装SSH,但是,SSH远程登陆的时候,需 ...

  9. 多台CentOS服务器下实现SSH免密码登录

    ROOT用户下实现SSH免密码登录 第一步:进入目录/root/.ssh $ cd  /root/.ssh/ 执行以下命令,会在当前目录下生成公钥(id_rsa.pub)/私钥(id_rsa)对 第二 ...

随机推荐

  1. BZOJ1196 [HNOI2006]公路修建问题 【二分 + Kruskal】

    题目 OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Association组织成立了,旨在建立O ...

  2. 3.5 实例讲解Lucene索引的结构设计

    3.2节我们已经运行了一个Lucene建立索引的小程序,这一节我们就以这个小程序为例讲解一下Lucene建立索引的过程. import java.nio.charset.StandardCharset ...

  3. AirPlay、DLNA、Miracast三大无线技术介绍

    小米盒子之AirPlay.DLNA.Miracast三大无线技术介绍 米官方称小米盒子的米联功能可以将小米手机或iPhone.iPad上的图片.音乐.视频等精彩内容投射到电视上,让你感受大屏的刺激.而 ...

  4. display:inline、block、inline-block的区别 摘】

    display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div& ...

  5. Java I/O 笔记

    1. Java常用I/O类概述 2. 文件I/O 你可以根据该文件是二进制文件还是文本文件来选择使用FileInputStream(FileOutputStream)或者FileReader(File ...

  6. DotNETCore 学习笔记 Startup、中间件、静态文件

    Application Startup Startup Constructor - IHostingEnvironment - ILoggerFactory ConfigureServices - I ...

  7. 飞扬的小鸟(NOIP2014)(丧病DP题)

    原题传送门 刚开始我还以为这道题目非常的简单.. 然后随便打了一个DP,直接WA,被zxyer狠狠地D了一顿. 然后发现有好多细节.. 首先假如某横坐标没有管子,那么l[x]=0;h[x]=m+1; ...

  8. Android控件介绍

    1. 介绍 Android控件大多位于android.widget, android.view.View为他们的父类对于Dialog系列, android.app.Dialog为父类 Android的 ...

  9. 配置wpa_supplicant调试wifi linux下命令行连接wifi

    调试wpa_supplicant先读一下对应的README.txt文件.根据README.txt修改编译配置. wpa_supplicant需要打开以下开关进行编译CONFIG_DRIVER_NL80 ...

  10. Centos下zabbix部署(二)agent安装并设置监控

    1.配置zabbix源 rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch ...