3o_AutoSSH
∮自动发送 ssh 公钥,为 ansible 鸣锣开道
- Bold 参考资料 http://mageedu.blog.51cto.com/4265610/1412028
- ...其实我并没有参考这篇博文的很多东西,只是我不太想解释我在做什么....
- ...我在做的其实是 使ansible 的被管理主机实现通过脚本发送 ssh 公钥,使其可以基于 ssh 进行互信通信
之前对 ssh 的理解稍有偏差,我在这里直接说正确的理解就好了.
A 连接 B (A,B 是两台机器,跑着 Linux CentOS7 的机器),B 是SSH 服务器,A 是客户端.
客户端需要把 自己的公钥发送至 服务器.以实现无需验证的 ssh 登陆.B 需要一直监听在 TCP22 端口.
A 是客户端,但 A 也是 ansible 的管理端, B 是众多被管理的 小弟之中的一个... "小弟"之中的一个.但 B 是 SSH 的服务器端.
其实我下面要说的 和 ansible 就没啥关系...
我直接上脚本吧... . ~之前还要做一件事#yum install expect
嗯嗯,一般来讲,expect 是另一种脚本,第一行得指明解释器的位置, man文档里说的比较清楚 # man expect
人家说确保 #!/usr/bin/expect -f 在程序的第一行,不过人家是用英语说的...
但是我用 EOF流 将expect 的脚本嵌套在 bash 脚本中了.
# vim auto_ssh.sh" /etc/passwd#!/bin/bash
count=1
if [ -z $1 ] ; then
echo "READ ./auto_ssh.txt NOOB ... ^v^"
exit 6
fi
if [ ! -e /root/.ssh/id_rsa.pub ] ; then
ssh-keygen -q -t rsa -f /root/.ssh/id_rsa -P ''
fi
for i in `awk '{print $1}' auto_ssh.txt` ; do
user=`awk -v I="$i" '{if(I==$1)print $2}' auto_ssh.txt`
pawd=`awk -v I="$i" '{if(I==$1)print $3}' auto_ssh.txt`
/usr/bin/expect << EOF
set time 5
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $user\@$i
expect {
"*(yes/no)*" {
send "yes\r"
exp_continue
}
"*password*" {
send "$pawd\r"
}
}
interact
expect eof
EOF
echo ""
echo "$i ssh-copy-id done!!"
if [ $count -ge $1 ] ; then
break
fi
let count++
sleep 1
done
ssh-add # 这句很关键呦接下来编辑一下你的配置文件,方便脚本去解析.
# vim auto_ssh.txt
以上方案应该不是最优方案,嗯嗯,一定不是.
但 以上方案是一个可行的方案,如果你觉得要写配置文件有点麻烦...
你的 /etc/ansible/hosts 文件里的主机是怎么添加上的.
嗯嗯,一如既往的献上彩蛋~
经过以上的操作之后, ssh 可以不用输入密码就可以登陆了.[即使在对方主机修改了 登陆密码之后,比如 root]
有一种奇葩的操作,是 定期给服务器更换 root 密码.如果你执行了以下指令.
# echo `cat /dev/urandom |strings -n 12 |head -n 1` | passwd --stdin root
基本正常人就再也 不可能知道你的 root 密码了~ 嗯嗯,也再没有人能以 root 登陆这台主机了.除了...
除了这台 SSH 客户端,可以登陆,而且无需验证密码~ 其实我很感兴趣的是 除此之外还有什么方法能以 root 再登陆B主机呢...
欢迎 交流~
3o_AutoSSH的更多相关文章
随机推荐
- Nginx-解读内置非默认模块 ngx_http_stub_status_module
1.Background ngx_http_stub_status_module 是一个 Nginx 的内置 HTTP 模块,该模块可以提供 Nginx 的状态信息.默认情况下这个模块是不被编译进来的 ...
- MySQL 5.7 并行复制实现原理与调优
MySQL 5.7并行复制时代 众所周知,MySQL的复制延迟是一直被诟病的问题之一,然而在Inside君之前的两篇博客中(1,2)中都已经提到了MySQL 5.7版本已经支持“真正”的并行复制功能, ...
- SSH 端口转发+内网穿透
用最直白的语言对本文所有内容进行定义: 端口转发(-L):用A机器(内网)登录B机器(公网), 在A机器打开端口,将收到的所有请求转发到B机器的某个端口 (在代理机上执行) 内网穿透(-R):用A机器 ...
- 初转java随感(一)程序=数据结构+算法
大学刚学编程的时候,有一句很经典的话程序=数据结构+算法 今天有了进一步认识. 场景: 1.当前局面 (1)有现成的封装好的分页组件 返回结果是page.类型为:Page.包括 page 分页信息,d ...
- 2016-12-15 java开发工作中,尚未做的工作
目前未涉及的工作内容: 1.将静态页导入工程,建成jsp文件.配置css.js.img文件.跳转路径 2.未用工具生成pojo dao service等源码文件 3.未签入自己写的代码 4.未搭建子系 ...
- 新增了个job
https://112.124.41.113/svn/wbhpro/wbh-adapter-job
- 常见的HTTP返回码如4xx, 5xx
常见的HTTP返回码如4xx, 5xx Client Error =====================400 Bad Request 因为错误的语法导致服务器无法理解请求信息.401 Unaut ...
- mysql:查询结果添加序列号
select (@i:=@i+1) as i,table_name.* from table_name,(select @i:=0) as it
- DHTMLX-第一弹
DHTMLX 半年前结束了漂泊的工作生活回到了公司,跟着团队开发新产品.忙碌起来就很少有时间静下来好好写点东西.公司既然要开发新的产品当然也会接触一些新的东西,也会面临新的挑战.接下来就将项目前端所用 ...
- 通过宏判断VS编译版本以及系统平台
MSC_VER 定义编译器的版本.下面是一些编译器版本的_MSC_VER值(参见扩展阅读中的参考文献2的链接) MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio ...
