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

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

  1. [root@localhost sshpass-1.05]# ./configure
  2. [root@localhost sshpass-1.05]# make && make install

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

  1. ##引用配置文件,全局变量都存放在config文件中
  2. . config
  3. #======================
  4. # function -->Error_log
  5. #定义错误日志存放位置
  6. #======================
  7. Error_log()
  8. {
  9. if [ $? -eq ]
  10. then
  11. echo "$1 $2 $3" >>$PWDDIR/$okLogfile
  12. else
  13. echo "$1 $2 $4" >>$PWDDIR/$errLogfile
  14. fi
  15. }
  16. #=================================
  17. # function --> Trust
  18. # 创建密钥登录环境
  19. #=============================
  20. Trust()
  21. {
  22. for ip in
  23. do
  24. ##批量创建zhangsan用户并赋予密码和.ssh文件夹
  25. sshpass -p aixocm ssh root@10.0..$ip -o StrictHostKeyChecking=no "useradd zhangsan && echo aixocm |passwd zhangsan --stdin && mkdir /home/zhangsan/.ssh/"
  26. Error_log sshsystem adduser [ok] [error]
  27. ##批量拷贝文件分发服务器上zhangsan用户的公钥认证文件给web层服务器
  28. sshpass -p aixocm scp /home/zhangsan/.ssh/authorized_keys root@10.0..$ip:/home/zhangsan/.ssh/authorized_keys
  29. Error_log sshsystem cpkey [ok] [error]
  30. ##由于是使用root用户传送的文件,需要使用root用户修改zhangsan家目录下的.ssh文件夹和公钥认证文件的权限和属主属组
  31. 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"
  32. Error_log sshsystem changeprem [ok] [error]
  33. ##给web层zhangsan 用户赋予sudo权限便于日常管理,拷贝配置文件前先备份web层服务器上的源文件以便恢复
  34. sshpass -p aixocm ssh root@10.0..$ip -o StrictHostKeyChecking=no mv /etc/sudoers /etc/sudoers.bak
  35. sshpass -p aixocm scp /etc/sudoers root@10.0..$ip:/etc/sudoers
  36. Error_log sshsystem addsudo [ok] [error]
  37. done
  38. }
  39. Main()
  40. {
  41. Trust
  42. }
  43. Main;

config文件

  1. PWDDIR=`pwd`
  2. errLogfile=errlog
  3. okLogfile=oklog
  4. IP1=10.0.7.15
  5. IP2=10.0.7.17
  6. User=`whoami`

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

host.sh

  1. #!/bin/bash
  2. #author:cm
  3. #filename:host.sh
  4. #Version :0.01
  5.  
  6. . config
  7. #use $PWDDIR
  8. #use $errLogfile
  9. #use $okLogfile
  10. #use $IP1
  11. #use $IP2
  12. #use $User
  13. #======================
  14. # function -->Error_log
  15. #======================
  16. Error_log()
  17. {
  18. if [ $? -eq ]
  19. then
  20. echo "$1 $2 $3" >>$PWDDIR/$okLogfile
  21. else
  22. echo "$1 $2 $4" >>$PWDDIR/$errLogfile
  23. fi
  24. }
  25. #========================
  26. #function -->menu1
  27. #一级菜单
  28. #========================
  29.  
  30. menu1(){
  31. clear
  32. while true
  33. do
  34. tput setf 4
    ###设置菜单字体颜色为红色
  35. echo "========================"
  36. echo " 1级菜单 "
  37. echo
  38. echo " (1)登录到WEB服务器 "
  39. echo
  40. echo " (2)文件大批量分发 "
  41. echo
  42. echo " (3) 退出"
  43. echo "========================"
  44. tput setf 0
    ####恢复字体颜色为黑色
  45. read -p "请输入你要选择的序号 【1|2|3】:" num1
  46. case $num1 in
  47. )
    ####显示二级菜单之前,清屏
  48. clear
  49. menu11
  50. ;;
  51. )
  52. clear
  53. menu12
  54. ;;
  55. )
  56. echo "系统即将退出......"
  57. sleep
  58. clear
  59. exit
  60. ;;
  61. *)
  62. echo "请输入正确的序号[1|2|3]:"
  63. ;;
  64. esac
  65. continue
  66. done
  67. }
  68. #===========================
  69. # function -->menu11
  70. #登录到web服务器
  71. #===========================
  72. menu11()
  73. {
  74. tput setf
  75. echo "========================="
  76. echo " 2级菜单 "
  77. echo " (1)登录到web1 10.0.7.15"
  78. echo
  79. echo " (2)登录到web2 10.0.7.17"
  80. echo
  81. echo " (3)回到上一级菜单"
  82. echo "=========================="
  83. tput setf
  84. read -p "请输入你要选择的序号:[1|2]:" num2
  85. case $num2 in
  86. )
  87. #登录到web1
  88. if [ "$User" == "zhangsan" ]
  89. then
  90. ssh zhangsan@$IP1
  91. else
  92. echo "请用zhangsan用户登录......"
  93. exit
  94. fi
  95. ;;
  96. )
  97. #登录到web2
  98. if [ "$User" == "zhangsan" ]
  99. then
  100. ssh zhangsan@$IP2
  101. else
  102. echo "请用zhangsan用户登录......"
  103. exit
  104. fi
  105. ;;
  106. )
  107. clear
  108. menu1
  109. ;;
  110. *)
  111. echo "请选择正确的序号:【1|2】:"
  112. ;;
  113. esac
  114. }
  115. #==============================
  116. # function --->menu12
  117. #文件大批量分发
    #==============================
  118. menu12()
  119. {
  120. tput setf
  121. echo "温馨提示:分发文件仅限在zhangsan家目录下"
  122. read -p "请输入要分发的文件 :" path1
  123. read -p "请输入分发后的文件路径:" path2
  124. tput setf
  125. for ip in
  126. do
  127. scp $path1 $User@10.0..$ip:$path2
  128. done
  129. }
    #=======================
    #function  -->Main()
    #程序调用总入口
    #=======================
  130. Main()
  131. {
  132. menu1
  133. }
  134. 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. [经验交流] Kubernetes Nginx Ingress 安装与使用

    Ingress 介绍 Kubernetes 上部署的微服务运行在它的私有网络中, 通过Pod实例的hostPort或Service实例的NodePort可以暴露到主机端口上,便于用户访问.但这样的方法 ...

  2. NET中的Memcached.ClientLibrary使用详解

    memcached在windows下的下载与安装 下载地址:http://pan.baidu.com/s/1yVILw       提取密码:5gx9 官方网站:http://memcached.or ...

  3. es let2

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. Java 如何将String转化为Int

    在 Java 中要将 String 类型转化为 int 类型时,需要使用 Integer 类中的 parseInt() 方法或者 valueOf() 方法进行转换. 例1: 1 2 3 4 5 6 S ...

  5. Python基础篇【第3篇】: Python正则表达式

    正则表达式 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.正则表达式是一个特殊的 ...

  6. 设计一个Stack,要求Push、Pop、获取最大最小值时间复杂度都为O(1)

    面试的时候,面试官让设计一个栈,要求有Push.Pop和获取最大最小值的操作,并且所有的操作都能够在O(1)的时间复杂度完成. 当时真没啥思路,后来在网上查了一下,恍然大悟,只能恨自己见识短浅.思路不 ...

  7. Tables without a clustered index are not supported in this version of SQL Server. Please create a clustered index and try again.

    问题: Azure Sql 在插入数据是出现“Msg 40054, Level 16, State 1, Line 2  Tables without a clustered index are no ...

  8. SimpleThreadPool实践

    前言 并发(Concurrency)一直谈论java绕不开的一个话题,从移动开发工程师到后端工程师,几乎所有的面试都要涉及到并发/多线程的一些问题.虽然多数时候我们使用线程池,都是已经实现好的框架—— ...

  9. Converter转换器使用

    package com.xu.javabean; import java.lang.reflect.InvocationTargetException; import java.util.Date; ...

  10. Linux CentOS安装postgresql 9.4

    一.前言 PostgreSQL通常也简称Postgres,是一个关系型数据库管理系统,适用于各种Linux操作系统.Windows.Solaris.BSD和Mac OS X.PostgreSQL遵循P ...