批量部署ssh信任关系

要求1:
大批量部署SSH信任关系,在A文件分发服务器上大批量部署WEB层面信任关系
文件分发服务器为:10.0.3.9 登录用户为:zhangsan
WEB层IP段:
10.0.3.10~10.0.3.60

(1)、请大批量在WEB层上建立zhangsan用户,并且在zhangsan家目下面创建一个.ssh目录
(2)、在3.9服务器上面,zhangsan用户是用ssh-genkey创建私钥匙和公钥,将公钥导出到authorized_keys
这个文件,权限更改为600
(3)、将authorized_keys分发到WEB层的zhangsan家目录下的.ssh目录下。
(4)、在本地编写一个脚本叫做Host.sh 菜单输出为:
1级菜单
(1)、登录到WEB服务器
(2)、文件大批量分发
(3)、退出
2级菜单
选择1的时候
(1)登录到WEB1
(2)登录到WEB2
选择2的时候
(1)请输入要分发的文件(绝对路径):
选择3的时候退出

实验环境

三台Linux机器,一台真实机(IP:10.0.2.68)和两台虚拟机(10.0.7.15和10.0.7.16)

将IP: 10.0.2.68设为文件分发服务器,将IP :10.0.7.15和IP: 10.0.7.17两台机器作为web层服务器

软件工具: sshpass

实验步骤:

1.使用root用户批量创建ssh信任关系

分发服务器上安装 sshpass软件工具  ftp://182.254.217.108/pub/soft/

解压文件,,进入解压后的文件夹

[[email protected] sshpass-1.05]# ./configure
[[email protected] sshpass-1.05]# make && make install

安装好sshpass工具后,编写trust.sh 建立信任关系,这个脚本只要root用户执行过一次就可以不再执行了

##引用配置文件,全局变量都存放在config文件中
. config
#======================
# function -->Error_log
#定义错误日志存放位置
#======================
Error_log()
{
if [ $? -eq 0 ]
then
    echo "$1 $2 $3" >>$PWDDIR/$okLogfile
else
    echo "$1 $2 $4" >>$PWDDIR/$errLogfile
fi
}
#=================================
#    function  --> Trust
# 创建密钥登录环境
#=============================
Trust()
{
for ip in 15 17
do
##批量创建zhangsan用户并赋予密码和.ssh文件夹
    sshpass -p aixocm ssh [email protected]10.0.7.$ip -o StrictHostKeyChecking=no  "useradd zhangsan && echo aixocm |passwd zhangsan --stdin && mkdir /home/zhangsan/.ssh/"
    Error_log sshsystem adduser [ok] [error]
##批量拷贝文件分发服务器上zhangsan用户的公钥认证文件给web层服务器
    sshpass -p aixocm scp /home/zhangsan/.ssh/authorized_keys [email protected]10.0.7.$ip:/home/zhangsan/.ssh/authorized_keys
    Error_log sshsystem cpkey [ok] [error]
##由于是使用root用户传送的文件,需要使用root用户修改zhangsan家目录下的.ssh文件夹和公钥认证文件的权限和属主属组
   sshpass -p aixocm ssh [email protected]10.0.7.$ip -o StrictHostKeyChecking=no "chown -R zhangsan:zhangsan /home/zhangsan/.ssh/ && chmod 600 /home/zhangsan/.ssh/authorized_keys"
    Error_log sshsystem changeprem [ok] [error]
##给web层zhangsan 用户赋予sudo权限便于日常管理,拷贝配置文件前先备份web层服务器上的源文件以便恢复
    sshpass -p aixocm ssh [email protected]10.0.7.$ip -o StrictHostKeyChecking=no mv /etc/sudoers /etc/sudoers.bak
    sshpass -p aixocm scp /etc/sudoers [email protected]10.0.7.$ip:/etc/sudoers
    Error_log sshsystem addsudo [ok] [error]
done
}
Main()
{
Trust
}
Main;

config文件

PWDDIR=`pwd`
errLogfile=errlog
okLogfile=oklog
IP1=10.0.7.15
IP2=10.0.7.17
User=`whoami`

使用root用户执行,建立好信任关系之后,就可以让zhangsan用户通过管理菜单脚本(host,sh)文件 进行管理了

host.sh

#!/bin/bash
#author:cm
#filename:host.sh
#Version :0.01

. config
#use $PWDDIR
#use $errLogfile
#use $okLogfile
#use $IP1
#use $IP2
#use $User
#======================
# function -->Error_log
#======================
Error_log()
{
if [ $? -eq 0 ]
then
    echo "$1 $2 $3" >>$PWDDIR/$okLogfile
else
    echo "$1 $2 $4" >>$PWDDIR/$errLogfile
fi
}
#========================
#function -->menu1
#一级菜单
#========================

menu1(){
clear
while true
do
tput setf 4###设置菜单字体颜色为红色
echo "========================"
echo "       1级菜单          "
echo
echo "   (1)登录到WEB服务器    "
echo
echo "   (2)文件大批量分发 "
echo
echo "   (3) 退出"
echo "========================"
tput setf 0####恢复字体颜色为黑色
read -p "请输入你要选择的序号 【1|2|3】:" num1
case $num1 in
1)####显示二级菜单之前,清屏
clear
menu11
;;
2)
clear
menu12
;;
3)
echo "系统即将退出......"
sleep 1
clear
exit 1
;;
*)
echo "请输入正确的序号[1|2|3]:"
;;
esac
continue
done
}
#===========================
# function -->menu11
#登录到web服务器
#===========================
menu11()
{
tput setf 4
echo  "========================="
echo  "         2级菜单          "
echo  "  (1)登录到web1 10.0.7.15"
echo
echo  "  (2)登录到web2 10.0.7.17"
echo
echo  "  (3)回到上一级菜单"
echo  "=========================="
tput setf 0
read -p "请输入你要选择的序号:[1|2]:" num2
case $num2 in
1)
#登录到web1
if [ "$User" == "zhangsan" ]
then
ssh [email protected]$IP1
else
echo "请用zhangsan用户登录......"
exit 1
fi
;;
2)
#登录到web2
if [ "$User" == "zhangsan" ]
then
ssh [email protected]$IP2
else
echo "请用zhangsan用户登录......"
exit 1
fi
;;
3)
clear
menu1
;;
*)
echo "请选择正确的序号:【1|2】:"
;;
esac
}
#==============================
#  function --->menu12
#文件大批量分发#==============================
menu12()
{
tput setf 4
echo "温馨提示:分发文件仅限在zhangsan家目录下"
read -p "请输入要分发的文件 :" path1
read -p "请输入分发后的文件路径:" path2
tput setf 0
for ip in 15 17
do
scp $path1 [email protected]10.0.7.$ip:$path2
done
}#=======================#function  -->Main()#程序调用总入口#=======================
Main()
{
menu1
}
Main;

这样就可以使用分发服务器上的张三用户登录web服务器进行操作了

时间: 2024-08-24 06:18:27

批量部署ssh信任关系的相关文章

linux主机之间建立ssh信任关系

需求: hostA 要免密码ssh登入 hostB,即建立ssh信任关系 实施: 1.hostA:在~/.ssh,创建ssh密钥对 执行命令 ssh-keygen -t rsa (要求输入的位置直接回车),默认生成密钥对文件 id_rsa 和 id_rsa.pub 2.hostB:在~/.ssh,修改信任文件authorized_keys 把 hostA 的公钥文件 id_rsa.pub 追加到 hostB 的~/.ssh/authorized_keys文件中 验证: hostA 要免密码ssh

shell脚本批量部署ssh

日常运维工作中,需要给几十上百台服务器批量部署软件或者是重启服务器等操作, 这样大量重复性的工作一定很苦恼,本文给大家提供了最基本的批量操作的方法,虽然效率不高,对于初学者来说还是好理解.由于刚开始学习写脚本,什么 puppt这样的高级工具还不会使用,就简单的利用shell脚本.ssh-keygen.expect来实现.希望能给各位带来帮助,不足之处还请留言 指出,大家共同进步. 首先,需要检查expect是否安装:rpm -qa|grep expect 然后,在操作机上创建公钥:ssh-key

建立集群间ssh信任关系

目的要求 一套集群里有10台主机,建立ssh信任关系,使集群内所有主机可以不输密码互相访问. 解决方法 1.在server1生成私钥 ssh-keygenssh-copy-id [email protected] scp -rp id_rsa [email protected]:root/.ssh/ 2.查看192.168.1.2上的私钥和 authorized_keys 1 root root 409 Jul 5 20:35 authorized_keys 1 root root 1675 J

使用Shell脚本+expect批量部署ssh

Shell脚本+expect批量部署ssh一.准备工作及思路1,三台机器做实验(centos6.5.IP:192.168.0.22 (主控制).192.168.0.156.192.168.0.157)2,IP:22这一台做主控机器,另外2台做客户机.3,提前在主控制机器上创建好公钥,安装好expect,使用脚本批量推送ssh公钥.4,本次部署是以root身份进行下面的操作.二.正式部署1,首先穿件秘钥[[email protected] .ssh]# ssh-keygen -t rsa Gene

批量部署ssh私钥认证

vim  batch_sshkey.sh #!/bin/bashcd /rootcat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keysfor i in `cat iplist`doip=$(echo "$i"|cut -f1 -d":")password=$(echo "$i"|cut -f2 -d":")expect -c "spawn scp /root

批量部署SSH基于key的验证脚本

工作中,使用ansible等自动化运维工具实现服务器批量自动化运维管理,需要先解决管理端和被管理端的免密码登录,可以脚本实现ssh基于key的验证,代码如下: #!/bin/bash PASS=123456 USER=root ssh-keygen -f '/root/.ssh/id_rsa' -P '' &> /dev/null rpm -q expect &> /dev/null || yum install expect -y -q while read IP;do ex

SSH 信任关系建立

需求hostA通过ssh登陆到hostB,实现免密登陆,以及SCP的免密传送文件 由于hostA要登陆到hostB ? ? 首先需要在hostA上生成密钥,使用以下命令 ssh-keygen -t rsa 按3个回车 然后可以使用ls -atrl命令查看当前用户目录下的.ssh目录下的文件内容 .ssh目录下生成的文件 ? ? authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥 id_rsa : 生成的私钥文件 id_rsa.pub : 生成的公钥文件 k

VMware vsphere平台中部署 Oracle RAC(二、NTP配置和SSH信任)

NTP 配置两个节点检查是否安装ntp rpm -q ntp///如果没安装就yum -y install ntp 进行安装///systemctl enable ntpd systemctl enable ntpd.service 设置开机启动ntpsystemctl start ntpd 启动ntpsystemctl status ntpd 查看ntp状态 -----racdb1 作为NTP服务端和客户端配置---------vi /etc/ntp.conf# 外部时间服务器不可用时,以本地

Ansible批量更新远程主机用户密码 (包括Ansible批量做ssh互信)

1)  在服务端安装ansible 1 [[email protected] ~]# yum install -y ansible 2) 配置ansible到远程主机的ssh无密码信任关系 (authoried_keys 模块) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48