一键SSH免密脚本
大型项目一键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免密脚本的更多相关文章
- ssh免密脚本
#!/bin/sh if [ "$1"x = ""x ]; then echo "usage:/opt/bin/auto-ssh.sh user se ...
- Shell脚本实现SSH免密登录及批量配置管理
本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们 ...
- [提供可行性脚本] RHEL/CentOS 7 多节点SSH免密登陆
实验说明: 在自动化部署时,会经常SSH别的机器去操作,然而每次的密码认证却很令人烦躁,尤其是很长的密码,因此SSH免密登陆就显得必不可少: 在机器数目很多的时候,使用更过的往往是Ansible分发并 ...
- Linux入门——SSH免密登录
SSH免密登录 1.简介 SSH是一种网络协议,用于计算机之间的加密登录. 本文针对的实现是OpenSSH,它是自由软件,应用非常广泛. 2.初始化公钥私钥 有rsa,dsa两种加密方式,生成的公钥私 ...
- linux下expect命令实现批量ssh免密
有时候我们需要批量发送ssh命令给服务器,但是有可能有些服务器是新加入的,还没有配置ssh免密,这个时候就会提示我们输入yes/no 或者password等,expect脚本命令就是用于在提示这些的时 ...
- Shell 编程中,在循环里使用ssh免密远程执行命令的注意事项
前提:给自己机器配置ssh免密登录#!/bin/bashcat << 'EOD' > list1234EOD while read linedo if ssh myname@127. ...
- SSH免密登录配置
SSH免密登录配置 本地生成密钥文件: $ ssh-keygen 输出: Generating public/private rsa key pair. Enter file in which to ...
- Centos7配置ssh免密登录群发
ssh免密登录是客户端发送自己的公钥到服务器.用公钥进行解密,自己生成的私钥进行加密. 首先在客户端查看sshd服务是否启动 [zhiwei@zhiwei1 ~]$ ps -Af|grep sshd; ...
- 批量实现ssh免密登录
本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们 ...
- hadoop(八)集群namenode启动ssh免密登录(完全分布式五)|10
前置章节:hadoop集群配置同步(hadoop完全分布式四)|10 启动namenode之前: 1. 先查看有无节点启动,执行jps查看,有的话停掉 [shaozhiqi@hadoop102 ~]$ ...
随机推荐
- union在重构代码中的使用技巧
http://blog.chinaunix.net/uid-23629988-id-158156.html 在产品的开发过程中,无论是代码的重构,还是添加新的功能时,都不可避免的有对现有结构体的修改, ...
- k8s pvc扩容
#查看是否支持扩容 $ kubectl get sc ** -o yaml ··· allowVolumeExpansion: true #拥有该字段表示允许动态扩容 ··· #找到需要扩容的pvc ...
- 无分号js风格注意的三个问题
建议如果一行代码是以 ( [ ` 开头的,则最好都在其前面补上一个分号. // 1.( function say() { console.log('hello world') } // ...
- .NET 网络唤醒
本文介绍下电脑设备关机的情况下如何通过网络唤醒设备,之前电源S状态 计算机Power电源状态- 唐宋元明清2188 - 博客园 (cnblogs.com) 有介绍过远程唤醒设备,后面这俩天了解多了点所 ...
- elasticsearch单机版安装及安装过程踩的坑整理
elasticsearch单机版安装及安装过程踩的坑整理 环境及版本 Linux版本:centos7.3 JDK版本:1.8 Elasticsearch版本: Linux用户:esuser 说明:因为 ...
- 连续因子一个正整数 N
一个正整数 N 的因子中可能存在若干连续的数字.例如 630 可以分解为 3×5×6×7,其中 5.6.7 就是 3 个连续的数字.给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的 ...
- Linux IP 命令
改MAC 地址 ip link set dev nic1 downip link set dev nic1 address 0c:42:a1:8f:a4:47ip link set dev nic1 ...
- 使用Windows API 编写按行分配的计算矩阵向量相乘的并行程序
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程题,居然还涉及到多线程了,而且是调用Windows接口函数写多线程.虽然学汇编的时候有所了解,但毕竟没尝试过,思来想去,写出了下面的蹩脚代码,不 ...
- EF Core报错“Format of the initialization string does not conform to specification starting at index 0.”
问题分析: 今天在EF Core数据库迁移的过程中无意中发现此错误,我的项目仅仅复制黏贴了配置文件而已,自此发现是数据库配置文件json在作祟. 对比了下发现是.json文件没有被设置"复制 ...
- C# – class, filed, property, const, readonly, get, set, init, required 使用基础
前言 心血来潮,这篇讲点基础的东西. Field 比起 Property,Field 很不起眼,你若问 JavaScript,它甚至都没有 Field. 但在 C#,class 里头真正装 value ...