ssh免密验证,shell批量设置

#!/bin/sh
#ssh免密验证,shell批量设置#

. /etc/init.d/functions
[[ -f /usr/bin/expect ]] || { echo " install expect ...";yum install expect -y >/dev/null 2>&1; } #若没expect则安装#
[ $? = 0 ] || { echo "expect安装失败";exit; } #安装失败则退出#
PUB=/$HOME/.ssh/id_dsa #公钥路径#

USER=root   #登录用户#
PASS=123321 #登录密码#
echo  >>my.sh.conf  #防止没有出错#
source ./my.sh.conf  >/dev/null 2>&1 #加载自定义#
[[ -f $PUB ]] || { ssh-keygen -t dsa -P "" -f $PUB >/dev/null 2>&1; } #若没公钥则生成#

#expect自动交互
function EXP() {
/usr/bin/expect << EOF
set timeout 5
spawn /usr/bin/ssh-copy-id -i $PUB.pub  $USER@$n
expect {
        "*yes/no*" { send "yes\r";exp_continue }
        "password:" { send "$PASS\n";exp_continue }
        eof { exit }
        }
EOF
}
#
for n in $*
do
  EXP >/dev/null 2>&1
  ssh $n hostname >/dev/null 2>&1
  [[ $? == 0 ]] && action "========$n" /bin/true || action "========$n" /bin/false
done

exit
###########################
# #使用实例#

#编写shell #
 vim sshkey.me.sh
#自定义认证用户及密码#
echo "
USER=root
PASS=root2018
">my.sh.conf

#hosts设置(可选,可直接使用IP)#
echo "
192.168.8.21   node1
192.168.8.22   node2
">>/etc/hosts

#执行shell文件,ssh批量认证#
sh ./sshkey.me.sh node1 node2

###########################

  

原文地址:https://www.cnblogs.com/kcxg/p/10503473.html

时间: 2024-10-13 10:35:57

ssh免密验证,shell批量设置的相关文章

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

本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们通常还是工作在,几十台上百台服务器这样的环境,而使用ansible或者puppet这样的自动化运维工具则显得大材小用,并且最终的效果可能还不如几个小工具达到的效果好.像ssh免密登录在配合pssh这样的推送工具,在配合自动化配置脚本,可以说是即方便也使用.这一节将详细带大家以shell脚本的形式实现

ansible自动安装并配置ssh免密环境shell脚本

#!/bin/bash clearUSER=rootPASSWD=amunlinuxPUBDIR=/root/.sshcat > ~/prompt-ans.txt << EOF 如果需要配置服务器数量过多,最好在外部保存到ip-list文件内,易于美观 如果.ssh/ 下存在文件,需要删除后再次执行脚本,不想删除注释关键字即可 服务器密码需要统一 EOFcat ~/prompt-ans.txtsleep 4syum -y install ansible expect* which exp

expect一键实现集群ssh免密登入

expect具有非交互式功能 yum -y install expect mkpasswd -l 20   #<==生成随机字符串,-l参数指定生成字符串的长度 非交互密钥分发 添加用户(所有机器) useradd jiege1 echo 123456|passwd --stdin jiege1 id jiege1 10创建密钥对 su - jiege1 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa>/dev/null 2>&1 10一键分发公

批量实现ssh免密登录

本节索引 场景分析 ssh免密登录 pssh工具批量管理 SHELL自动化脚本 本篇总结 场景分析 作为一个运维工程师,不是每个人工作的环境都想阿里.腾讯那样,动不动就上亿的PV量,上万台服务器.我们通常还是工作在,几十台上百台服务器这样的环境,而使用ansible或者puppet这样的自动化运维工具则显得大材小用,并且最终的效果可能还不如几个小工具达到的效果好.像ssh免密登录在配合pssh这样的推送工具,在配合自动化配置脚本,可以说是即方便也使用.这一节将详细带大家以shell脚本的形式实现

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

有时候我们需要批量发送ssh命令给服务器,但是有可能有些服务器是新加入的,还没有配置ssh免密,这个时候就会提示我们输入yes/no 或者password等,expect脚本命令就是用于在提示这些的时候,自动为我们输入相应的文字 expect脚本 先看一段shell脚本,实现了ssh自动连接 #!/usr/bin/expect spawn ssh 192.168.1.241 expect "password" send "123456\r" expect "

[原创] SSH免密登录设置----原理详解

首先介绍一下SSH: 当我们用一台服务器登录另一台服务器可直接使用SSH协议进行登陆: //具体格式: // ssh [用户名]@[IP] ssh [email protected]192.168.33.12 也可以直接远程传送文件到另一台服务器,具体格式如下: //具体格式: // scp [文件名] [目标服务器用户名]@[目标服务器IP] : [目标复制位置] scp test.txt [email protected]192.168.33.12:/home 注意:以上操作方法存在弊端,每

多台服务器-SSH免密登录设置

在4台服务器-SSH免密登录设置,如以下4台服务器 master1 node001 node002 node003 我想在master1对4台服务器进行拉取或者分发任务或者是集群服务器的批量操作,但是每次都要输出密码,这个过程比较影响操作效率??? 以下给出解决方法---->设置密钥验证 密钥验证流程如图 原理: 即在源服务器上先生成一份公钥和一份密钥,将公钥复制到目标服务器,利用命令将公钥添加至目标服务器的授权列表(authorized_keys).当有服务器带着公钥申请连接服务器时,目标服务

centos7:ssh免密登陆设置及常见错误

目录 一.免密登录设置 二.常见错误 三.CentOS7再ssh-copy-id时的错误 一.免密登录设置 1.使用root用户登录,进入到目录/root/.ssh 2.执行命令:ssh-keygen -t rsa 一路回车,完成后会在目录/root/.ssh下面生成文件 id_rsa和id_rsa.pub 3.将公钥写入文件authorized_keys:cat id_rsa.pub >> authorized_keys 4.重复1.2.3,直到要免密登录的所有机器都生成了id_rsa和id

Linux主机SSH免密设置解析

为了保证一台Linux主机的安全,所以我们每个主机登录的时候一般我们都设置账号密码登录.但是很多时候为了操作方便,我们都通过设置SSH免密码登录.那么该如何设置?是不是免密码登录就不安全了呢? 一.被访问主机的秘钥存储机制 在被SSH登录的主机中,其实都有一个存储来登录的主机的秘钥的文件,它的名字叫做authorized_keys,它的位置就在root/下面的隐藏目录.ssh中(注:如果这台主机没有被设置任何免秘钥登录,这个文件缺省是不存在的) 在authorized_keys文件中,存储着能够