码迷,mamicode.com
首页 > 其他好文 > 详细

批量部署ssh信任关系

时间:2016-07-28 14:24:04      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:

要求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/

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

[root@localhost sshpass-1.05]# ./configure
[root@localhost 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 root@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 root@10.0.7.$ip:/home/zhangsan/.ssh/authorized_keys
    Error_log sshsystem cpkey [ok] [error]
##由于是使用root用户传送的文件,需要使用root用户修改zhangsan家目录下的.ssh文件夹和公钥认证文件的权限和属主属组
   sshpass -p aixocm ssh root@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 root@10.0.7.$ip -o StrictHostKeyChecking=no mv /etc/sudoers /etc/sudoers.bak
    sshpass -p aixocm scp /etc/sudoers root@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 zhangsan@$IP1 else echo "请用zhangsan用户登录......" exit 1 fi ;; 2) #登录到web2 if [ "$User" == "zhangsan" ] then ssh zhangsan@$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 $User@10.0.7.$ip:$path2 done }
#=======================
#function  -->Main()
#程序调用总入口
#======================= Main() { menu1 } Main;

 

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

 

批量部署ssh信任关系

标签:

原文地址:http://www.cnblogs.com/cmlinux/p/5712606.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!