要求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 ]
then
echo "$1 $2 $3" >>$PWDDIR/$okLogfile
else
echo "$1 $2 $4" >>$PWDDIR/$errLogfile
fi
}
#=================================
# function --> Trust
# 创建密钥登录环境
#=============================
Trust()
{
for ip in
do
##批量创建zhangsan用户并赋予密码和.ssh文件夹
sshpass -p aixocm ssh root@10.0..$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..$ip:/home/zhangsan/.ssh/authorized_keys
Error_log sshsystem cpkey [ok] [error]
##由于是使用root用户传送的文件,需要使用root用户修改zhangsan家目录下的.ssh文件夹和公钥认证文件的权限和属主属组
sshpass -p aixocm ssh root@10.0..$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..$ip -o StrictHostKeyChecking=no mv /etc/sudoers /etc/sudoers.bak
sshpass -p aixocm scp /etc/sudoers root@10.0..$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 ]
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
)
####显示二级菜单之前,清屏
clear
menu11
;;
)
clear
menu12
;;
)
echo "系统即将退出......"
sleep
clear
exit
;;
*)
echo "请输入正确的序号[1|2|3]:"
;;
esac
continue
done
}
#===========================
# function -->menu11
#登录到web服务器
#===========================
menu11()
{
tput setf
echo "========================="
echo " 2级菜单 "
echo " (1)登录到web1 10.0.7.15"
echo
echo " (2)登录到web2 10.0.7.17"
echo
echo " (3)回到上一级菜单"
echo "=========================="
tput setf
read -p "请输入你要选择的序号:[1|2]:" num2
case $num2 in
)
#登录到web1
if [ "$User" == "zhangsan" ]
then
ssh zhangsan@$IP1
else
echo "请用zhangsan用户登录......"
exit
fi
;;
)
#登录到web2
if [ "$User" == "zhangsan" ]
then
ssh zhangsan@$IP2
else
echo "请用zhangsan用户登录......"
exit
fi
;;
)
clear
menu1
;;
*)
echo "请选择正确的序号:【1|2】:"
;;
esac
}
#==============================
# function --->menu12
#文件大批量分发
#==============================
menu12()
{
tput setf
echo "温馨提示:分发文件仅限在zhangsan家目录下"
read -p "请输入要分发的文件 :" path1
read -p "请输入分发后的文件路径:" path2
tput setf
for ip in
do
scp $path1 $User@10.0..$ip:$path2
done
}
#=======================
#function  -->Main()
#程序调用总入口
#=======================
Main()
{
menu1
}
Main;

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

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

  1. Linux创建SSH信任关系

    Linux服务器创建信任关系可以解决远程执行命令.远程传输文件多次手工输入的麻烦.可以实现环境一键打包备份. 测试环境 SuSE 手工创建 假设服务器A与B间要建立信任关系.用户想从服务器A免密码登录 ...

  2. ssh 信任关系无密码登陆,清除公钥,批量脚本

    实验机器: 主机a:192.168.2.128 主机b:192.168.2.130 实验目标: 手动建立a到b的信任关系,实现在主机a通过 ssh 192.168.2.130不用输入密码远程登陆b主机 ...

  3. 批量部署ssh私钥认证

    vim  batch_sshkey.sh #!/bin/bashcd /rootcat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keysfor ...

  4. shell脚本批量部署ssh

    日常运维工作中,需要给几十上百台服务器批量部署软件或者是重启服务器等操作, 这样大量重复性的工作一定很苦恼,本文给大家提供了最基本的批量操作的方法,虽然效率不高,对于初学者来说还是好理解.由于刚开始学 ...

  5. linux建立ssh信任关系

    一.建立SSH信任将A主机做为客户端(发起SSH请求 ip:192.168.200.170)将B主机作为服务器端(接收ssh请求   ip:192.168.200.149)以上以主动发起SSH登录请求 ...

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

    工作中,使用ansible等自动化运维工具实现服务器批量自动化运维管理,需要先解决管理端和被管理端的免密码登录,可以脚本实现ssh基于key的验证,代码如下: #!/bin/bash PASS=123 ...

  7. 【ssh信任关系】解决信任关系不生效问题

    配置的时候遇见点问题,发现即便将id_rsa.pub拷贝到了另一台机器上,信任也没有建立起来. 原因是另外一台机器上目录权限不对,可以通过su root后观察/var/log/message里的日志信 ...

  8. 批量部署ssh免密登陆

    #!/bin/bash#set -xservers="10.254.192.xx10.254.192.xx10.254.192.xx"passwd="xxxxxxxx&q ...

  9. SSH 信任关系建立

    需求hostA通过ssh登陆到hostB,实现免密登陆,以及SCP的免密传送文件 由于hostA要登陆到hostB 首先需要在hostA上生成密钥,使用以下命令 ssh-keygen -t rsa 按 ...

随机推荐

  1. Spring Test+JUnit整合使用

    在做spring相关测试时比较麻烦,如果只用JUnit测试,需要没测有初始化一下applicationContext,效率比较底下,而且也有不足之处.具体见下文 导致多次Spring容器初始化问题 根 ...

  2. 路由跟踪语法:tracert www.love125.com

    tracert  www.love125.com 路由跟踪语法

  3. elastalert SpikeRule异常告警问题

    公司里面用了ELK,所以也就顺其自然的玩起了elastalert, 发现SpikeRule比较符合自己的需求. 但配置后,死活不停的虚假告警,看实际曲线明明没有相差太多,1.4的倍率却总是被打破. 憋 ...

  4. Talk about VR

    Virtual reality --VR ,虚拟现实,是利用计算机模拟一个三维空间的世界,提供用户关于各种感官的模拟,让用户感觉身临其境,可以及时,没有限制地观察三维空间内的事物,用户进行位置移动时, ...

  5. Eclipse连接VirtualBox中的Android x86

    Android x86 Alt+F1打开命令行,命令netcfg查看当前ip,记住,然后Alt+F7回界面. Eclipse-Window-Preferences-Android-DDMS-Use A ...

  6. 在Web中使用Windows控件

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+] 将Net控件转化为ActiveX控件 1GUID 2实现IObjectSafety接口 3程序集设定 制作安装程序 Web集 ...

  7. 【HOW】如何通过URL给Reporting Services报表传递参数

    [本地模式Reporting Services] 参见官方文档:http://msdn.microsoft.com/en-us/library/ms154042.aspx 示例:http://serv ...

  8. css 画基本图形

    抄于http://dongtianee.sinaapp.com/demo9.html /******************************************************** ...

  9. Ice分布式程序设计—IceBox(Hello World Application)

    忙了三天,总算浏览完此书.藉此记下 Ice 的 IceBox 服务框架. 在此用 IceBox 框架写 Hello World 程序,即以载体来体现其特性. 第一步:编写 Slice 文件,映射生成 ...

  10. Hive On Spark hiveserver2方式使用

    启动hiveserver2: hiveserver2 --hiveconf hive.execution.engine=spark spark.master=yarn 使用beeline连接hives ...