当前位置:首页 > 嵌入式 > 嵌入式新闻
[导读]大家好,我是anyux。我将给大家介绍Linux多台机器一键免密互信脚本。

大家好,我是anyux。我将给大家介绍Linux多台机器一键免密互信脚本。

因为很多操作工具构架需要免密钥互信的基础才能实现,比如hadoop,MHA等,本人十分懒惰,不想因为反复克隆机器后,再搞复制粘贴的操作。从昨天晚上11点还完成,气得直接睡觉去了。

白天来公司,正巧无事(一会做完了),上手就开始完成这个脚本。

心急的同学,可以直接替换head_ip(前缀ip),arr(后缀ip),passwd(密码),以root权限直接运行

这个版本是很基础的小脚本,就跟闹着玩一样。

它的不足,

依赖第三工具,并且需要以root权限安装,运行ip限制,需要手动修改同步密钥的算法未优化,感觉可以优化,虽然还不知道优化的空间有多少

再说说它的实现逻辑

这里的前提,是所有同步密钥机器的密码一致(不一致的要等待下一个版本更新吧)

随机一台机器登录,生成密钥对,复制公钥到其他主机认证基于循环,逐个远程登录主机,删除密钥对,重新生密钥对基于循环,逐个远程登录主机,安装远程工具sshpass,复制公钥到其他机器,还有本地主机localhost检测多主机免密通信情况#!/bin/bash#算法密钥#分发给指定机器#ip_headerhead_ip='192.168.255.'#ip_footerarr=(113 114 115)#用户家密钥目录base_dir=~/.ssh/#公钥pub=id_rsa.pub#私钥key=id_rsa#用户名称user=root#用户密码passwd=root#需要root权限安装软件install_cmd(){yum install -y pssh sshpass}create_key(){sleep 2#删除本地初始密钥对rm -rf ${base_dir}sleep 1echo -e "删除完成\n"echo "开始分发"echo "\n"echo "++++++++++++++++++++"#本地主机生成密钥\ssh-keygen -t rsa -f ${base_dir}${key} -P ""for ip in ${arr[@]}doecho "输出ip**********"echo "ssh root@${head_ip}${ip} "tmp='ssh-keygen -t rsa -f ${base_dir}${key} -P ""'#本地主机公钥复制到其他主机认证文件sshpass -p${passwd} ssh-copy-id $user@${head_ip}${ip} -o StrictHostKeyChecking=no#远程主机连接,删除已生成的密钥,并重新生成密钥sshpass -p${passwd} ssh $user@${head_ip}${ip} "rm -rf ${base_dir}${key};rm -rf ${base_dir}{pub}"#远程主机连接,生成密钥sshpass -p${passwd} ssh $user@${head_ip}${ip} "ssh-keygen -t rsa -f ${base_dir}${key} -P ''"#远程主机连接,将公钥复制到其他主机认证文件for tmp_ip in ${arr[@]}do#安装远程连接工具sshpass -p${passwd} ssh $user@${head_ip}${ip} "yum install -y sshpass;"#远程主机,将公钥同步到其他机器sshpass -p${passwd} ssh $user@${head_ip}${ip} "sshpass -p${passwd} ssh-copy-id $user@${head_ip}${tmp_ip} -o StrictHostKeyChecking=no"#远程主机,将公钥同步localhost主机名下sshpass -p${passwd} ssh $user@${head_ip}${ip} "sshpass -p${passwd} ssh-copy-id $user@localhost -o StrictHostKeyChecking=no"donedoneecho -e "分发完结\n"}check_ip(){for ip in ${arr[@]}dopssh -H ${head_ip}${ip} -i $1done}bat(){echo "输出ok:";check_ip 'echo "ok"'echo "输出ping结果:";check_ip 'ping qq.com -c 2'echo "获取主机名:";check_ip 'ls ~/.ssh'echo "获取主机名:";check_ip "source /etc/profile;ip a | grep inet | grep ${head_ip}"}main(){install_cmd;create_key;bat}main

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

双系统将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对双系统的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 双系统 Windows Linux

安装Linux操作系统并不复杂,下面是一个大致的步骤指南,以帮助您完成安装。1. 下载Linux发行版:首先,您需要从Linux发行版官方网站下载最新的ISO镜像文件。

关键字: Linux 操作系统 ISO镜像

计算机是由一堆硬件组成的,为了有限的控制这些硬件资源,于是就有了操作系统的产生,操作系统是软件子系统的一部分,是硬件基础上的第一层软件。

关键字: Linux 操作系统 计算机

Linux操作系统是一套免费使用和自由传播的类Unix操作系统,通常被称为GNU/Linux。它是由林纳斯·托瓦兹在1991年首次发布的,并基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Lin...

关键字: Linux 操作系统

所谓进程间通信就是在不同进程之间传播或交换信息,它是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递、交换信息;还可以让一个程序能够在同一时间里处理许多用户的需求。

关键字: Linux 进程通信 编程接口

串口通信作为一种最传统的通信方式,在工业自动化、通讯、控制等领域得到广泛使用。

关键字: Linux 串口通信 通讯

2023年11月16日: MikroElektronika(MIKROE) ,作为一家通过提供基于成熟标准的创新式硬软件产品来大幅缩短开发时间的嵌入式解决方案公司,今天宣布推出一款基于单线设备的软硬件开源解决方案Cli...

关键字: 嵌入式 Linux 操作系统

Linux是一种免费使用和自由传播的类Unix操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布。它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CP...

关键字: Linux 操作系统

本文中,小编将对嵌入式予以介绍,如果你想对它的详细情况有所认识,或者想要增进对它的了解程度,不妨请看以下内容哦。

关键字: 嵌入式 Linux

在这篇文章中,小编将为大家带来嵌入式 Linux的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: 嵌入式 Linux
关闭
关闭