一、SSH免密配置

(1)生成密钥

(2)将中控机的密钥复制到所有节点(实现中控机访问所有节点)

(3)若要实现所有节点相互免密,将含有所有节点公钥的文件复制到所有节点

以dataxc用户为例,脚本示例如下:

#!/bin/bash
# sshfree.sh

#安装expect,用于自动交互任务
sudo apt-get install -y expect

#要设置免密登录的节点,177为中控机(本机)
nodes=(192.168.10.177 192.168.10.225 192.168.10.226 192.168.10.227)
#登录密码,所有节点一致
passwd=123456

#---中控机免密登录其他节点---

#在所有节点生成秘钥
#如果(yes/no)?则自动选择yes继续下一步,有的版本是(yes/no/[fingerprint])?
#如果password:则自动将passwd写在后面继续下一步
create_key(){
	expect -c "set timeout -1;
	spawn ssh dataxc@$node ssh-keygen -t rsa -P '' -f /home/dataxc/.ssh/id_rsa;
	expect {
		*(yes/no* {send -- yes\r;exp_continue;}
		*password:* {send -- $passwd\r;exp_continue;}
		eof\t{exit 0}
	}";
}

ssh_create_key(){
	for node in ${nodes[*]}
	do
		create_key $node $passwd
	done
}

ssh_create_key

#将中控机公钥复制到所有节点
#如果(yes/no)?则自动选择yes继续下一步,有的版本是(yes/no/[fingerprint])?
#如果password:则自动将passwd写在后面继续下一步
copy_id(){
	expect -c "set timeout -1;
	spawn ssh-copy-id dataxc@$node;     
	expect {
		*(yes/no* {send -- yes\r;exp_continue;}
		*password:* {send -- $passwd\r;exp_continue;}
		eof\t{exit 0}
	}";
}

ssh_copy_id(){
	for node in ${nodes[*]}
	do
		copy_id $node $passwd
	done
}

ssh_copy_id

#---所有节点相互免密登录---

#将其他节点公钥追加到中控机
for node in ${nodes[*]:1}
	do
		ssh dataxc@$node cat /home/dataxc/.ssh/id_rsa.pub >> /home/dataxc/.ssh/authorized_keys
	done

#将包含所有节点公钥的文件复制到其他节点
for node in ${nodes[*]:1}
	do
		scp /home/dataxc/.ssh/authorized_keys dataxc@$node:/home/dataxc/.ssh/authorized_keys
	done

#end

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值