批量设置ssh无密码登陆脚本
时间:2022-04-29
本文章向大家介绍批量设置ssh无密码登陆脚本,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近要给集群设置ssh无密码登陆,如果需要手动设置这个无密码登陆,所以在网上找了几个脚本,亲测下面这个好使,并且设置比较简单。
需要用root账户执行,我也是要给root账户设置无密码登陆。
首先我们要创建密码,执行下面这句命令:
ssh-keygen -t rsa
脚本如下:我们仅仅需要修改的就是node=()里面的主机名就可以了,当前前提是你必须在/etc/hosts 配置了。
#!/bin/bash
node=(hadoop.Master hadoop.SlaveT1 hadoop.SlaveT2) # hostname for each node
username=root # username to be interconnected
homename=$username # home dir, i.e. home/zhangyang
if [ "$username" = "root" ];
then
homename=root
else
homename=home/$username
fi
for((i=0; i<${#node[*]}; i++))
do
ssh $username@${node[i]} 'ssh-keygen -t rsa; chmod 755 ~/.ssh'
done
#cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
echo "batch authorized_keys created..."
echo "start scp..."
#scp node003:/$homename/.ssh/authorized_keys /$homename/.ssh/node003.key
for((i=0; i<${#node[*]}; i++))
do
scp ${node[i]}:/$homename/.ssh/id_rsa.pub /$homename/.ssh/${node[i]}.key
echo "scp from ${node[i]} finished..."
done
echo "append key to authorized_keys..."
for((i=0; i<${#node[*]}; i++))
do
cat /$homename/.ssh/${node[i]}.key >> /$homename/.ssh/authorized_keys
echo "append ${node[i]}.key finished..."
done
echo "append all key finished..."
loop=${#node[*]}
let subloop=loop-1
echo "starting scp complete authorized_keys to ${node[1]}~${node[subloop]}"
for((i=1; i<${#node[*]}; i++))
do
scp /$homename/.ssh/authorized_keys ${node[i]}:/$homename/.ssh/authorized_keys
echo "scp to ${node[i]} finished..."
done
echo "scp all nodes finished..."
# delete intermediate files
rm -rf /$homename/.ssh/*.key
echo "all configuration finished..."
然后给脚本授予执行的权限 chmod +x batchSSH.sh
然后执行./batchSSh.sh
当然这个脚本也有缺陷,它需要自己手动输入密码,如果节点多的话,还是很痛苦的,不过还好啦,比起自己手动搞的话,好多了,谁叫我不懂shell呢,哈哈!
- hadoop:将WordCount打包成独立运行的jar包
- Hadoop: MapReduce2多个job串行处理
- UE4新手引导之下载和安装虚幻4游戏引擎
- mac 下卸载mysql的方法
- ZooKeeper 笔记(1) 安装部署及hello world
- mybatis 使用经验小结
- ZooKeeper 笔记(2) 监听数据变化
- 使用C# 和Consul进行分布式系统协调
- 设置 java -jar 的进程显示名称
- 爱浪携手豆瓣内容、腾讯共同发布AI语音耳机
- Win.ini和注册表的读取写入
- ZooKeeper 笔记(4) 实战应用之【消除单点故障】
- 64位centos 下编译 hadoop 2.6.0 源码
- Python基础原理:FP-growth算法的构建
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【python-leetcode15-双指针】最接近的三数之和
- c++之普通函数和模板函数的区别
- 【python-leetcode15-双指针】三个数之和为零
- 百度easydl之图像分类构建是否佩戴口罩模型
- c++之普通函数和模板函数的调用规则
- 解决github打不开问题
- vuejs之第一个vue程序
- c++之函数模板的局限性
- c++之模板-类模板
- springboot监控之监控管理
- c++之类模板和函数模板的区别
- 【python-leetcode977-双指针】有序数组的平方
- springboot分布式之springcloud-Eureka注册中心
- c++之类模板成员函数创建时机
- vuejs之v-on小例子之实现购买数量的增加和减少