批量设置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呢,哈哈!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏xingoo, 一个梦想做发明家的程序员

Maven日常 —— 你应该知道的一二三

以前在日常工作中,使用Maven只是机械的执行Maven clean、Maven install,对其中的原理与过程并无了解,近期阅读了《Maven实战》,对...

20380
来自专栏架构师之路

究竟先操作缓存,还是数据库?

但是,一旦没有命中缓存,或者一旦涉及写操作,流程会比没有缓存更加复杂,这些是今天要分享的话题。

19220
来自专栏静下来

ECSHOP整合百度ueditor编辑器方法 支持远程图片本地化

image.png ECSHOP商城自带的编辑器实在是不能忍,太难用了。 就换成了百度的ueditor编辑器,本来最近修改了几个商城的,索性自己也记录一次吧。 ...

38160
来自专栏java一日一条

使用 Nginx 自己实现一个 Web 调试代理服务器

在Hecker News中我提到过,我记录了一种我使用NGINX(一个久经考验的产品,可以迅速地反向代理)作为一个本地测试代理服务器的方法。

21710
来自专栏小尘哥的专栏

闹心的Broken pipe

79030
来自专栏老蒋专栏

腾讯云服务器快照备份硬盘 确保系统和文件数据安全

目前,阿里云快照备份是需要收费服务的,腾讯云快照备份还没有收费。缺点就是腾讯云快照备份需要手动备份,不可以设定定时自动备份,不过我们要求也不要太高毕竟人家还没有...

49200
来自专栏开源项目

码云推荐 | 基于 Bootstrap 实现通用后台管理系统 zhengAdmin

基于 Bootstrap 实现的响应式 Material Design 风格的通用后台管理系统 https://gitee.com/shuzheng/zheng...

51780
来自专栏禅林阆苑

macos下java版本动态切换 【原创】

macos下java版本动态切换 Write By CS逍遥剑仙 我的主页: www.csxiaoyao.com GitHub: github...

378110
来自专栏云计算教程系列

如何在Ubuntu 16.04上添加和删除用户

您应该知道最基本任务之一是如何在新的Linux服务器上添加和删除用户。当您创建新系统时,您通常(例如在DigitalOcean Droplets上)默认情况下仅...

1.5K40
来自专栏信安之路

一步一步带你体验 openvas

openvas 是 nessus 项目的一个开源分支,用于对目标系统进行漏洞评估和管理,openvas 的配置使用相较于 nessus 更加复杂,扫描速度也不如...

17100

扫码关注云+社区

领取腾讯云代金券