ssh免密码登录之分发密钥
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免密码登录之分发密钥的更多相关文章
- Xshell配置ssh免密码登录-密钥公钥(Public key)与私钥(Private Key)登录【已成功实例】
本文转自https://blog.csdn.net/qjc_501165091/article/details/51278696 ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口 ...
- 配置ssh免密码登录设置后还是提示需要输入密码
工作之余搭建了一个集群测试,配置了ssh免密码登录以后 ,所有的ssh-copy-id 密钥也都分发了 ,各项配置也没有问题,但是使用ssh进行免密登录时,没有报错,但是要输入被ssh主机的登录密码 ...
- ssh免密码登录机器(使用公钥和秘钥进行加密来实现)
ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 登录的原理: 有机器A(192.168.1.155),B(192.168.1. ...
- 如何配置ssh免密码登录
[TOC] 如果你在管理一堆unix机器,每次登录都要输入密码是挺烦的事情,一方面为了安全我们一般不会将所有机器的密码都设置成一样,另一方面就算一样每次都输入一遍也很麻烦. 这种情况下我们一般是用ss ...
- Linux下SSH免密码登录
转自:http://haitao.iteye.com/blog/1744272 ssh配置 主机A:10.0.5.199 主机B:10.0.5.198 需要配置主机A无密码登录主机A,主机B 先确保所 ...
- 配置Ssh免密码登录
配置Ssh免密码登录 一个master节点,两个client节点(client1.client2) 1.所有节点创建hadoop用户,并设置密码 以root账号登录: useradd hadoop p ...
- [Hadoop] - SSH免密码登录
在安装hadoop之前需要进行ssh免密码登录,ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以Redhat为例. 我这里只采用一台机器A(10. ...
- Hadoop集群搭建过程中ssh免密码登录(二)
一.为什么设置ssh免密码登录 在集群中,Hadoop控制脚本依赖SSH来执行针对整个集群的操作.例如,某个脚本能够终止并重启集群中的所有守护进程.所以,需要安装SSH,但是,SSH远程登陆的时候,需 ...
- 多台CentOS服务器下实现SSH免密码登录
ROOT用户下实现SSH免密码登录 第一步:进入目录/root/.ssh $ cd /root/.ssh/ 执行以下命令,会在当前目录下生成公钥(id_rsa.pub)/私钥(id_rsa)对 第二 ...
随机推荐
- h5 Visibility API总结
最近活动中的小游戏,有涉及页面隐藏或app后台运行时候,暂停游戏的功能,使用了h5的Visibility API,在此总结如下: 两个属性 document.hidden (Read only) 如果 ...
- Hibernate中多对多的annotation的写法(中间表可以有多个字段)
2011-07-04 6:52 一般情况下,多对多的关联关系是需要中间表的: 情况一:如果中间表仅仅是做关联用的,它里面仅有2个外键做联合主键,则使用ManyToMany(不用写中间表的Model,只 ...
- CI的多级目录的功能
https://segmentfault.com/q/1010000008317555?_ea=1621531
- PHP AES128加密解密
<?php /** * Class AES */ class AES { public static function encrypt($input, $key) { $size = mcryp ...
- OpenCV 2.4.9 学习笔记(1)—— 基本功能结构
一些关于OpenCV(2.4.9版本)的学习笔记,作为记录,以免自己忘了. 安装与配置 OpenCV的下载.安装以及在各个平台(Windows/Linux等)配置网上有很多的资料,自己就不用存了.需要 ...
- 魔法使的烟花(NOIP模拟赛Round 7)
[问题描述] 魔法森林里有很多蘑菇,魔法使常常采摘它们来制作魔法药水.为了在6月的那个奇妙的晚上用魔法绽放出最绚丽的烟花,魔法使决定对魔法森林进行一番彻底的勘探. 魔法森林分为n个区域,由n-1条长度 ...
- cygwin设置
解决乱码问题 # 设置为中文环境,使提示成为中文 export LANG =" zh_CN.UTF-8 " # 输出为中文编码 export OUTPUT_CHARSET =& ...
- Android SQLite使用
1. 介绍 SQLite是一款轻型的数据库, 是遵守ACID的关系型数据库管理系统, Android系统已经在框架中适配接口供用户使用. 2. 数据类型 SQLite采用的是动态数据类型, 会根据存入 ...
- Centos6.5配置阿里云yum源
很多时候,centos6.5 yum源可能无法访问,报404等等问题,一般情况下我们可以将yum源配置成阿里云的源,当然也可以配置成163的,简单说一下配置成阿里云的: 阿里云镜像源地址:http:/ ...
- Java进阶之路,技术要点
宏观方面 一.JAVA.要想成为JAVA(高级)工程师肯定要学习JAVA.一般的程序员或许只需知道一些JAVA的语法结构就可以应付了.但要成为JAVA(高级)工程师,您要对JAVA做比较深入的研究.您 ...