大型项目一键SSH免密脚本

#!/usr/bin/env bash
root=$(
cd $(dirname $0)/..
pwd
)
source ${root}/dragonrc read -p "请您输入主机用户:" user
if [ -z $user ];then
echo
echo -e "\033[1;32;31m警告:您输入的用户名为空!\033[0m"
echo
exit 0
fi
read -p "请您输入主机密码:" mima
if [ -z $mima ];then
echo
echo -e "\033[1;32;31m警告:您第一次输入的密码为空!\033[0m"
echo
exit 0
fi
read -p "请您再次输入密码:" queren
if [ -z $queren ];then
echo
echo -e "\033[1;32;31m警告:您第二次输入的密码为空!\033[0m"
echo
exit 0
fi
if [ $mima == $queren ];then echo "您输入的密码为:$queren" && sleep 1 echo "正在为您创建密钥对儿,请您注意" && sleep 1 else echo
echo -e "\033[1;32;31m不好意思~您两次输入的密码不匹配,请您重新输入!\033[0m"
echo read -p "请您输入主机用户:" user
if [ -z $user ];then
echo
echo -e "\033[1;32;31m警告:您输入的用户名为空!\033[0m"
echo
exit 0
fi
read -p "请您输入主机密码:" mima
if [ -z $mima ];then
echo
echo -e "\033[1;32;31m警告:您第一次输入的密码为空!\033[0m"
echo
exit 0
fi
read -p "请您再次输入密码:" queren
if [ -z $queren ];then
echo
echo -e "\033[1;32;31m警告:您第二次输入的密码为空!\033[0m"
echo
exit 0
fi
if [ $mima == $queren ];then echo "您输入的密码为:$queren" echo "正在为您创建密钥对儿,请您注意" && sleep 1 else echo
echo -e "\033[1;32;31m抱歉~您两次输入的密码不匹配,请您重新执行脚本!\033[0m"
echo exit 1 fi fi > /root/.ssh/authorized_keys if [ -f /root/.ssh/id_rsa.pub ];then echo "您的主机已经有密钥对儿了,不需要再次创建" else
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa fi rpm -q sshpass &> /dev/null if [ $? -ne 0 ];then rpm -ivh ${root}/rpm/other/sshpass-1.06-2.el7.x86_64.rpm &> /dev/null echo "StrictHostKeyChecking no" > /root/.ssh/config echo "UserKnownHostsFile=/dev/null" >> /root/.ssh/config else echo "StrictHostKeyChecking no" > /root/.ssh/config echo "UserKnownHostsFile=/dev/null" >> /root/.ssh/config fi IFS=',' read -r -a all_nodes <<<"${ALL_NODES}"
for ip in "${all_nodes[@]}"; do sshpass -p $queren ssh-copy-id $user@$ip &> /dev/null ssh $user@$ip "pwd" &> /dev/null if [ $? -eq 0 ];then echo "$ip is add successful" else echo "$ip is failure" fi done
ansible ${OTHER_NODES} -m shell -a "rm -rf /root/.ssh/id_rsa*"
ansible ${OTHER_NODES} -m shell -a "ssh-keygen -t rsa -P \"\" -f ~/.ssh/id_rsa" echo -e "\033[5;32;31m温馨提示:主机双向互信ing...\033[0m"
IFS=',' read -r -a nodes <<<"${OTHER_NODES}"
for oip in "${nodes[@]}"; do
ssh -T $user@$oip cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
done
ansible dragon -m copy -a "src=/root/.ssh/authorized_keys dest=/root/.ssh/authorized_keys"
echo -e "\033[1;32;31m双向互信已完成!\033[0m"

一键SSH免密脚本的更多相关文章

  1. ssh免密脚本

    #!/bin/sh if [ "$1"x = ""x ]; then echo "usage:/opt/bin/auto-ssh.sh user se ...

  2. Shell脚本实现SSH免密登录及批量配置管理

    本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们 ...

  3. [提供可行性脚本] RHEL/CentOS 7 多节点SSH免密登陆

    实验说明: 在自动化部署时,会经常SSH别的机器去操作,然而每次的密码认证却很令人烦躁,尤其是很长的密码,因此SSH免密登陆就显得必不可少: 在机器数目很多的时候,使用更过的往往是Ansible分发并 ...

  4. Linux入门——SSH免密登录

    SSH免密登录 1.简介 SSH是一种网络协议,用于计算机之间的加密登录. 本文针对的实现是OpenSSH,它是自由软件,应用非常广泛. 2.初始化公钥私钥 有rsa,dsa两种加密方式,生成的公钥私 ...

  5. linux下expect命令实现批量ssh免密

    有时候我们需要批量发送ssh命令给服务器,但是有可能有些服务器是新加入的,还没有配置ssh免密,这个时候就会提示我们输入yes/no 或者password等,expect脚本命令就是用于在提示这些的时 ...

  6. Shell 编程中,在循环里使用ssh免密远程执行命令的注意事项

    前提:给自己机器配置ssh免密登录#!/bin/bashcat << 'EOD' > list1234EOD while read linedo if ssh myname@127. ...

  7. SSH免密登录配置

    SSH免密登录配置 本地生成密钥文件: $ ssh-keygen 输出: Generating public/private rsa key pair. Enter file in which to ...

  8. Centos7配置ssh免密登录群发

    ssh免密登录是客户端发送自己的公钥到服务器.用公钥进行解密,自己生成的私钥进行加密. 首先在客户端查看sshd服务是否启动 [zhiwei@zhiwei1 ~]$ ps -Af|grep sshd; ...

  9. 批量实现ssh免密登录

    本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们 ...

  10. hadoop(八)集群namenode启动ssh免密登录(完全分布式五)|10

    前置章节:hadoop集群配置同步(hadoop完全分布式四)|10 启动namenode之前: 1. 先查看有无节点启动,执行jps查看,有的话停掉 [shaozhiqi@hadoop102 ~]$ ...

随机推荐

  1. union在重构代码中的使用技巧

    http://blog.chinaunix.net/uid-23629988-id-158156.html 在产品的开发过程中,无论是代码的重构,还是添加新的功能时,都不可避免的有对现有结构体的修改, ...

  2. k8s pvc扩容

    #查看是否支持扩容 $ kubectl get sc ** -o yaml ··· allowVolumeExpansion: true #拥有该字段表示允许动态扩容 ··· #找到需要扩容的pvc ...

  3. 无分号js风格注意的三个问题

    建议如果一行代码是以   (   [   `  开头的,则最好都在其前面补上一个分号. // 1.( function say() { console.log('hello world') } // ...

  4. .NET 网络唤醒

    本文介绍下电脑设备关机的情况下如何通过网络唤醒设备,之前电源S状态 计算机Power电源状态- 唐宋元明清2188 - 博客园 (cnblogs.com) 有介绍过远程唤醒设备,后面这俩天了解多了点所 ...

  5. elasticsearch单机版安装及安装过程踩的坑整理

    elasticsearch单机版安装及安装过程踩的坑整理 环境及版本 Linux版本:centos7.3 JDK版本:1.8 Elasticsearch版本: Linux用户:esuser 说明:因为 ...

  6. 连续因子一个正整数 N

    一个正整数 N 的因子中可能存在若干连续的数字.例如 630 可以分解为 3×5×6×7,其中 5.6.7 就是 3 个连续的数字.给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的 ...

  7. Linux IP 命令

    改MAC 地址 ip link set dev nic1 downip link set dev nic1 address 0c:42:a1:8f:a4:47ip link set dev nic1 ...

  8. 使用Windows API 编写按行分配的计算矩阵向量相乘的并行程序

    水了一学期的院选修,万万没想到期末考试还有比较硬核的编程题,居然还涉及到多线程了,而且是调用Windows接口函数写多线程.虽然学汇编的时候有所了解,但毕竟没尝试过,思来想去,写出了下面的蹩脚代码,不 ...

  9. EF Core报错“Format of the initialization string does not conform to specification starting at index 0.”

    问题分析: 今天在EF Core数据库迁移的过程中无意中发现此错误,我的项目仅仅复制黏贴了配置文件而已,自此发现是数据库配置文件json在作祟. 对比了下发现是.json文件没有被设置"复制 ...

  10. C# – class, filed, property, const, readonly, get, set, init, required 使用基础

    前言 心血来潮,这篇讲点基础的东西. Field 比起 Property,Field 很不起眼,你若问 JavaScript,它甚至都没有 Field. 但在 C#,class 里头真正装 value ...