ssh批量互信

前言

在部署ansible过程中,刚开始我把被控制端的密码明文的写在了/etc/ansible/hosts中考虑到安全问题,因为ansible不需要安装客户端和服务端,原因是基于ssh连接。正因此可以创建ssh互信控制端和被控制端。

一、文件iplist

该文件是记录被控制端的ip 要和/etc/ansible/hosts

定义的ip一致。否则会有的机器不会连通。

实验过程中:

cat iplist

192.168.2.180

192.168.2.235

192.168.2.141

192.168.1.130

192.168.1.131

192.168.1.132

192.168.1.133

192.168.1.134

有这么几个服务器。。

cat /etc/ansible/hosts

[webhosts]

192.168.2.235 ansible_ssh_user=root

#ansible_ssh_pass=nbs2010

192.168.2.180 ansible_ssh_user=root

#ansible_ssh_pass=nbs2010

192.168.2.141 ansible_ssh_user=root

#ansible_ssh_pass=nbs2010

192.168.1.130 ansible_ssh_user=root

192.168.1.131 ansible_ssh_user=root

192.168.1.132 ansible_ssh_user=root

192.168.1.133 ansible_ssh_user=root

192.168.1.134 ansible_ssh_user=root

二、文件test.exp

该文件是用来和第三个文件相互给iplist中的创建互信。因为在创建过程中要产生互动输入密码通过expect语言来完成。

在使用expect之前需要安装

yum install tcl

yum install tk

yum install expect

test.exp

#!/usr/bin/expect  -f
set host [lindex $argv 0]

定义一个参数和变量host

set password "nbs2010"

定义互动时输入的密码

spawn ssh-copy-id -i /root/.ssh/id_rsa.pub " [email protected]$host"

此处是ssh建立互信时的登陆口令$host会是在test.sh 里作为参数传进来。

expect {
        "yes/no"        {send "yes\r";exp_continue}
        "*password*"    {send "$password\r"}
}
expect eof  //此处是当建立完互信后立刻退出被控制端


三、test.sh


该文件是结合iplist和test.exp来建立互信

#!/bin/bash
ssh-keygen -t rsa -f /root/.ssh/id_rsa -P ‘‘

//创建互信时,创建认证文件。可以man ssh-keygen 各个参数的含义。

n=0
for ip in `cat iplist`
do
#逐行取出每个ip的数值
n=$(($n+1))
expect test.exp $ip > /dev/null 2>&1
done

//此处是shell脚本的核心。通过for循环来逐行读取ip列表。作为一个参数传到test.exp的$argv 0

把执行结果都输出到/dev/null 文件中去。。

演示过程如下:


直接执行./test.sh

[[email protected] ~]# ./test.sh

Generating public/private rsa key pair.

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

3d:b1:d5:51:12:be:f1:43:91:08:18:1b:5a:93:10:20 [email protected]

The key‘s randomart image is:

+--[ RSA 2048]----+

|   E ..oo=+.. =+o|

|    .   oo+  + +.|

|       . .. . +. |

|         . +  .+ |

|        S +   ...|

|           .    .|

|                 |

|                 |

|                 |

+-----------------+

此时在/root/.ssh/下出现:

[[email protected] ~]# ll .ssh/

总用量 12

-rw-------. 1 root root 1671 10月 11 23:03 id_rsa

-rw-r--r--. 1 root root  393 10月 11 23:03 id_rsa.pub

-rw-r--r--. 1 root root 3160 10月 11 23:03 known_hosts

说明现在互信已经建立。

可以通过ansible webhost -m ping 会出现:

[[email protected] ~]# ansible webhosts -m ping

192.168.2.141 | success >> {

"changed": false,

"ping": "pong"

}

192.168.1.130 | success >> {

"changed": false,

"ping": "pong"

}

192.168.1.131 | success >> {

"changed": false,

"ping": "pong"

}

192.168.2.235 | success >> {

"changed": false,

"ping": "pong"

}

192.168.2.180 | success >> {

"changed": false,

"ping": "pong"

}

192.168.1.133 | success >> {

"changed": false,

"ping": "pong"

}

192.168.1.132 | success >> {

"changed": false,

"ping": "pong"

}

192.168.1.134 | success >> {

"changed": false,

"ping": "pong"

}

此时说明这八个ip的被控制端和控制端互信已经建立。。

接下来你可以批量的使用ansible的强大的功能了。。不需要在/etc/ansible/hosts中写密码。。。

时间: 2025-01-09 04:07:18

ssh批量互信的相关文章

7)SSH批量管理分发项目

ssh服务认证类型介绍 从SSH客户端来看,SSH服务主要提供两种级别的安全验证,具体级别如下: 基于口令的安全验证: 基于口令的安全验证的方式就是大家一直在用的,只要知道服务器的SSH连接账号和口令,应用服务器的IP及开放的端口,默认为22,就可以通过SSH客户端登录到这台远程主机.此时,联机过程中所有传输的数据都是加密的. 基于口令的我们可以通过expect,pssh,sshpass实现批量管理. 期中集群:一键搭建及优化50台服务器集群 基于密钥的安全验证: 基于密钥的安全验证方式是指,需

小米范工具系列之十:小米范SSH批量命令执行工具

小米范SSH批量命令执行工具的主要功能是自动登录多台机器,并执行指定的命令,比如批量抓去shadow.批量获取系统版本等. 界面如下图: 使用方法: 1.输入目标ip.用户名.密码.ssh端口(使用空格或tab键分隔),每行一个目标. 2.设置线程数(如果不设置默认为5). 3.选择输出,默认为右侧输出窗口,可以设置每个ip一个文件,比如抓去shadow,可以把每个ip的执行结果保存到一个txt文件放在当前目录下. 4.点击执行即可. 最新版本下载地址:http://pan.baidu.com/

SSH批量部署服务

SSH批量部署服务 在NFS上作为中心分发服务器将私钥分发到其他服务器上 NFS部署 1 [[email protected] ~]# useradd luoahong 2 [[email protected] ~]# echo 123456|passwd --stdin luoahong 3 Changing password for user luoahong. 4 passwd: all authentication tokens updated successfully. 5 创建密码对

记录一则Linux SSH的互信配置过程

需求:四台Linux主机,IP地址为192.168.10.10/11/12/13,配置root用户的等价性1.各节点ssh-keygen生成RSA密钥和公钥 ? 1 ssh-keygen -q -t rsa  -N "" -f  ~/.ssh/id_rsa 2.将所有的公钥文件汇总到一个总的授权key文件中在10执行汇总: ? 1 2 3 4 ssh 192.168.10.10 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

SSH批量分发与管理

一.SSH服务介绍 SSH是Secure Shell Protocol的简写,由IETF网络工作小组制定:在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后再进行数据传输,确保了传递的数据安全. SSH是专为远程登录会话和其他网络服务提供的安全性协议.利用SSH协议可以有效的防止远程管理过程中的信息泄露问题,在当前的生产环境当中,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件.如telnet等. SSH服务结构: SSH服务是由服务端软件OpenSS

ssh批量登录 上传 执行命令 下载文件

用途: 搞linux主机的内网,拿到通用的账户密码,批量登录,上传系统信息收集脚本,把执行的结果拉回本地,用于分析. 缺点: 不支持多线程  密码必须正确切可连通  端口硬编码为22 如果不是22 请自行修改 执行过程: 执行ssh.py root root 会自动登录ssh,上传本地文件目录下的1.py文件到linux服务器tmp目录,执行/tmp/1.py文件,删除/tmp/1.py文件,把1.py执行的文件的生成的test.txt下载回本地.注意:下载的文件名已硬编码在1.py文件28行,

ssh批量分发服务搭建

SSH批量分发服务 1. 系统环境 [[email protected] ~]# uname -a Linux A 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 2203:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux [[email protected] ~]# ifconfig eth0 | grep 'inet addr' |awk'{print $2}'|awk -F':' '{print $2}' 10.0.0.3

(转)SSH批量分发管理&非交互式expect

目录 1 SSH批量分发管理 1.1 测试环境 1.2 批量管理步骤 1.3 批量分发管理实例 1.3.1 利用sudo提权来实现没有权限的用户拷贝 1.3.2 利用sudo提权开发管理脚本 1.3.3 利用rsync来实现增量备份 1.4 SSH批量管理分发脚本实战 1.5 SSH批量管理总结 2 非交互式expect 2.1 非交互式生成密钥及实现批量管理 2.2 一键批量安装httpd服务 2.3 一键自动化50台规模集群网站 1 SSH批量分发管理 基于口令的,如何实现批量管理:expe

Web集群之SSH批量管理

1.什么是SSH批量管理在管理机产生公钥和私钥,然后把自己的公钥推送给需要被管理的服务器,然后就可以通过scp和ssh命令,无需输入密码即可管理 锁=公钥,钥匙=私钥 企业里实现ssh方案:1)直接root ssh key.条件:系统允许root使用ssh2)sudo提权来实现没有权限用户拷贝 实验环境: hostname ip 描述 m01 172.16.1.61 管理机 web01 172.16.1.7 被管理 nfs 172.16.1.31 被管理 backup 172.16.1.41 被