博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
批量部署ssh信任关系
阅读量:4994 次
发布时间:2019-06-12

本文共 4198 字,大约阅读时间需要 13 分钟。

要求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/$okLogfileelse    echo "$1 $2 $4" >>$PWDDIR/$errLogfilefi}#=================================#    function  --> Trust# 创建密钥登录环境#=============================Trust(){for ip in 15 17do##批量创建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=errlogokLogfile=oklogIP1=10.0.7.15IP2=10.0.7.17User=`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/$okLogfileelse    echo "$1 $2 $4" >>$PWDDIR/$errLogfilefi}#========================#function -->menu1#一级菜单#========================menu1(){clearwhile truedotput setf 4 ###设置菜单字体颜色为红色 echo "========================" echo "       1级菜单          "echoecho "   (1)登录到WEB服务器    "echoecho "   (2)文件大批量分发 "echoecho "   (3) 退出"echo "========================"tput setf 0 ####恢复字体颜色为黑色 read -p "请输入你要选择的序号 【1|2|3】:" num1case $num1 in1) ####显示二级菜单之前,清屏clearmenu11;;2)clearmenu12;;3)echo "系统即将退出......"sleep 1clearexit 1;;*)echo "请输入正确的序号[1|2|3]:";;esaccontinuedone}#===========================# function -->menu11#登录到web服务器#===========================menu11(){tput setf 4echo  "========================="echo  "         2级菜单          "echo  "  (1)登录到web1 10.0.7.15"echoecho  "  (2)登录到web2 10.0.7.17"echoecho  "  (3)回到上一级菜单"echo  "=========================="tput setf 0read -p "请输入你要选择的序号:[1|2]:" num2case $num2 in1)#登录到web1if [ "$User" == "zhangsan" ]thenssh zhangsan@$IP1elseecho "请用zhangsan用户登录......"exit 1fi;;2)#登录到web2if [ "$User" == "zhangsan" ]thenssh zhangsan@$IP2elseecho "请用zhangsan用户登录......"exit 1fi;;3)clearmenu1;;*)echo "请选择正确的序号:【1|2】:";;esac}#==============================#  function --->menu12#文件大批量分发 #==============================menu12(){tput setf 4echo "温馨提示:分发文件仅限在zhangsan家目录下"read -p "请输入要分发的文件 :" path1read -p "请输入分发后的文件路径:" path2tput setf 0for ip in 15 17doscp $path1 $User@10.0.7.$ip:$path2 done} #======================= #function  -->Main() #程序调用总入口 #=======================Main(){menu1}Main;

 

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

 

转载于:https://www.cnblogs.com/cmlinux/p/5712606.html

你可能感兴趣的文章
.ds_store是什么文件
查看>>
递归C++
查看>>
POJ 1751 Highways(最小生成树&Prim)题解
查看>>
linux 安装openssh-server, openssh-client
查看>>
Java继承的基本概念及其限制 总结
查看>>
RF1001: 各浏览器对 '@font-face' 规则支持的字体格式不同,IE 支持 EOT 字体,Firefox Safari Opera 支持 TrueType 等字体...
查看>>
Socket 学习(三)
查看>>
题解 CF43B 【Letter】
查看>>
CommandName and CommandArgument
查看>>
[z]FNV哈希算法
查看>>
通过层序和中序遍历序列重建二叉树
查看>>
【Git】git clone与git pull区别
查看>>
【SVN】SVN的trunk、branches、tag的使用以及分支的概念
查看>>
JS闭包理解
查看>>
整数对题目
查看>>
php设计模式-观察者模式
查看>>
NFC技术:使用Android Beam技术传输文本(一)
查看>>
C++判断一个文件是否可以正确打开的代码
查看>>
unity 判断 是手机还是平板
查看>>
VisualStudio2015单步调试
查看>>