hosts文件,存储要部署的节点IP地址,其中以#开头表示注释掉

192.168.101.52
192.168.101.53
192.168.101.54
192.168.101.55
192.168.101.56

start.sh文件 在hosts文件中存储的所有节点上,生成默认的公钥和私钥,其中单个节点生成的脚本在keygen文件中

#!/bin/bash# ssh-keygen every node
hosts="hosts"if [ -f hosts ]
thenecho "Start ssh free"
elseecho "Please add hosts file"exit 1
fiif [ $# != 2 ]
thenecho "USAGE:$0 user password!"exit 1
elseusername=$1pawdname=$2#login every node and ssh-keygenfor x in `cat hosts | sed "/^#.*/d"`do#echo ${x}if [ -f keygen ]thenexpect keygen ${username} ${x} ${pawdname}elseecho "ssh-keygen not exists"echo "Please check it"exit 1fidone
fi

  keygen文件  在单个节点上生成公钥和私钥

#!/usr/bin/expect -fset timeout 2set name [lindex $argv 0]
set node [lindex $argv 1]
set pawd [lindex $argv 2]spawn ssh ${name}@${node}
expect {"*yes/no*" {send "yes\n";exp_continue}"*password:" {send "$pawd\r"}
}expect "*${name}@${node}*"
send "ssh-keygen -t rsa -P ''\r"
expect "*ssh/id_rsa):"
send "\r"
expect {"Overwrite (y/n)?" {send "y\n";exp_continue}"*${name}@${node}*" {send "exit\r"}
}
expect eof
exit

  备注:请注意,不同版本的提示输出不一样,可能需要读者手动更改keygen 文件中,expect后面的语句

  上述几个文件,就可以完成在指定的节点上,生成密钥对了,下面来看下后续处理生成密钥的过程,代码如下:

author.sh   将start.sh脚本中生成的公钥写入到authorized_keys中,并将其上传到各个节点上,最后更改该文件的权限

#!/bin/bash
TMP="tmps"
rm -rf ${TMP}
mkdir ${TMP}TMP=`cd ${TMP};pwd`
HOST="hosts"
USER=""
PAWD="111111"if [ $# == 1 ]
thenUSER=$1
elif [ $# == 2 ]
thenUSER=$1PAWD=$2
elseecho "USAGE:$0 username"echo "USAGE:$0 username password"exit 1
fiecho ${USER}" "${PAWD}#download id_rsa.pub from every node to the tmp dir
count=1
for x in `cat ${HOST}| sed "/^#.*/d"`
doexpect download ${USER} ${x} ${PAWD} "${TMP}/${count}"count=`expr $count + 1`
done#let all id_rsa.pub into authorized_keys
count=1
for x in `ls ${TMP}/*`
doif [ count == 1 ]thencat ${x} > /home/${USER}/.ssh/authorized_keyselsecat ${x} >> /home/${USER}/.ssh/authorized_keysficount=`expr $count + 1`
done#upload the authorized_keys to every node
for x in `cat ${HOST}| sed "/^#.*/d"`
doexpect upload ${USER} ${x} ${PAWD}
done#chmod 600 to authorized_keys
for x in `cat ${HOST}| sed "/^#.*/d"`
doexpect priority ${USER} ${x} ${PAWD}
done

  download 和upload脚本比较简单,就当作给读者的练习题吧,如果需要完整的代码,欢迎从这里下载:https://github.com/nashiyue/fssh.git

转载于:https://www.cnblogs.com/nashiyue/p/5003276.html

Centos下 自动化配置SSH免密码登陆相关推荐

  1. Day One,配置ssh免密码登陆

    在配置过程中遇到一些问题,参考了下面的博文: http://blog.sina.com.cn/s/blog_76fbd24d01017je7.html http://jingyan.baidu.com ...

  2. jenkins配置ssh免密码登陆

    说明 jenkins构建时需要连接远程服务器并且执行脚本,这时就需要配置ssh免密钥登录.jenkins构建时都是以jenkins用户进行操作,所以要以jeknins用户来配置免密钥登录.本教程以用户 ...

  3. CentOs 下SSH 免密码登陆

    CentOs下的SSH免密码登陆: 原理: 1.在ServerA的/root/.ssh目录下 ssh-keygen -t rsa 生成一对儿秘钥 2.将serverA的公钥拷贝到serverB下/ro ...

  4. centos配置ssh免密码登录后仍要输入密码的解决方法

    From: https://blog.csdn.net/zwbill/article/details/80448939 前言 在搭建Linux集群服务的时候,主服务器需要启动从服务器的服务,如果通过手 ...

  5. 菜鸟Linux系列:[4]SSH免密码登陆远程服务器

    背景:搭建Hadoop环境需要设置无密码登陆,所谓无密码登陆其实是指通过证书认证的方式登陆,使用一种被称为"公私钥"认证的方式来进行ssh登录. 在linux系统中,ssh是远程登 ...

  6. 基于三台虚拟机配置ssh免密登陆

    目录 一.前提准备 二.配置ssh免密登陆(Hadoop102,hadoop103,hadoop104) 三.配置三台免密登陆 一.前提准备 qian ti z bqian ti zqian tiqi ...

  7. ssh免密码登陆(三个节点master slave1 slave2)详细带命令版

    准备工作: 首先修改三个节点的名称分别为master slave1 slave2.建议以vim /etc/sysconfig/network的方式修改 修改三个节点的/etc/hosts文件 如下形式 ...

  8. Ubuntu下VScode配置ssh免密远程登录

    一 实现步骤 1.在本机与远程服务器上, 输入ssh-keygen -t rsa,然后连续回车直到结束 2.在本机上执行命令 ssh-copy-id 命令 (1).命令介绍 ssh-copy-id命令 ...

  9. Xshell配置ssh免密码登录-密钥公钥(Public key)与私钥(Private Key)登录

    ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,这里介绍密钥认证方式登录到linux/unix的方法. 使用密钥登录分为3步: 1.生成密钥 ...

最新文章

  1. python 数据逐个验证_在python中验证数据的最佳方法是什么?
  2. 今年最新整理的《高频Java面试题集合》,聪明人已经收藏了!
  3. JavaScript与TypeScript总结
  4. VS2017编译可在Win2000上运行的程序
  5. 盲人可以也做软件工程师,反思一下老哥
  6. TwinSocketStream
  7. C#并行编程(6):线程同步面面观
  8. 服务器如何查看gpu型号,linux 查看服务器gpu
  9. 研华数据采集卡如何采集压力信号转化为数字信号_我所了解的数据-数据分析-数据产品...
  10. 你是否遇到过职业枯竭?
  11. ce 修改 java游戏_CE6.4.3修改器加强版 CE加强版 可过NP的和众多游戏的CE修改器 - 下载 - 搜珍网...
  12. java中switch、while、do...while、for
  13. 开源许可证 有人管吗_4个令人困惑的开源许可证场景以及如何浏览它们
  14. 普莱得电器IPO过会:拟募资5.6亿 为杨伟明及韩挺两家族控制
  15. Centos8安装谷歌浏览器
  16. HTML5期末考核大作业,网站——旅游景点。 学生旅行 游玩 主题住宿网页
  17. 关于软件快捷方式显示异常,任务栏小图标模糊的解决方案
  18. 王煜全:AI独角兽必须进行业务升级 否则必死无疑
  19. 深圳计算机学校排名2015年,2015年深圳各区小学排名汇总
  20. 将C盘的软件已经移到了D盘,为什么C盘还是会出现变红或饱满的状态?

热门文章

  1. Java自动部署maven_Maven+Tomcat8 实现自动化部署的方法
  2. git获取管理员权限 windows_win10不兼容git2.7.3+版本
  3. java人力资源管理系统设计_人力资源管理系统——《Java Web程序设计》课程设计...
  4. python seek tell_PYTHON学习14.09:Python seek()和tell()函数详解
  5. Django项目与中间件与celery
  6. C实现二叉树的先序遍历,中序遍历,后序遍历
  7. 通过java使用ssh访问远程Linux
  8. Vue3之——和Vite不得不说的事
  9. JavaScript基础笔记
  10. Java Web中的中文编码问题分析