集群中各个Linux系统之间的免密登录

为了简化各系统之间的相互频繁发送公钥,可以写一下脚本:

首先在运行以下脚本之前需要安装expect,使用expect进行人机交互:

安装expect(备注:因为expect是基于tcl的,所以需要你的系统中安装有tcl)

如何检查?

[hadoop@hadoop01 ~]$ whereis tcl
tcl: /usr/lib64/tcl8.5 /usr/share/tcl8.5

 

如果看不到结果,请先安装tcl

 

安装expect:

[hadoop@hadoop01 ~]$  yum install expect

也可以从http://rpm.pbone.net下载相应发行版的rpm包

然后将下面的脚本放入/home/hadoop目录下即可。

ssh.sh 脚本主要负责模拟SSH公钥的生成,建立SSH免密登录,模拟配置SSH免密登录的过程

#!/bin/bash

BASE_HOST_LIST=$*
BASE_PASSWORD="hadoop"


#模拟SSH公钥生成的人机交互过程
sshkeygen(){
	yum -y install expect
	expect -c "
		spawn ssh-keygen
		expect {
			\"ssh/id_rsa):\" {send \"\r\";exp_continue}
			\"passphrase):\" {send \"\r\";exp_continue}
			\"again:\" {send \"\r\";exp_continue}

		}
	"
}

#模拟配置SSH免密登录过程的人机交互过程
sshcopyid(){
	expect -c "
		spawn ssh-copy-id $1
		expect {
			\"(yes/no)?\" {send \"yes\r\";exp_continue}
			\"password:\" {send \"$2\r\";exp_continue}

		}
	"

}

#本机生成密钥对
sshkeygen

#建立SSH免密登录(包括自己)for SSH_HOST in ${BASE_HOST_LIST}do#本机生成密钥对#sshkeygensshcopyid ${SSH_HOST} ${BASE_PASSWORD}done

再来一个启动ssh.sh的脚本:

#!/bin/bash

BASE_HOST_LIST=$*

#脚本的放置目录
SCRIPT_PATH="/home/hadoop/ssh.sh"

#先让自己跑ssh.sh脚本,为了能顺利发送脚本到集群各节点
sh ${SCRIPT_PATH} ${BASE_HOST_LIST}

#把脚本发送给其他服务器

for SSH_HOST in ${BASE_HOST_LIST}
do
        scp -r $SCRIPT_PATH hadoop@${SSH_HOST}:$SCRIPT_PATH

        ssh ${SSH_HOST} sh ${SCRIPT_PATH} ${BASE_HOST_LIST}

done

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

R_记忆犹新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值