ansible 通过堡垒机/跳板机 访问目标机器需求实战(ssh agent forward)
一. 需求背景:
在我们使用ansible的过程中经常会遇到这样的情况,我们要管理的机器都在内网中,这些内网机器的登录都是通过跳板机或者堡垒机登录。我们的ansible机器不能直接管理到这些后端的机器,那这个问题如何解决呢?
在网上找了很多的文章都写的有一些问题,也不全面,自己决定记录一个。
二. 解决方法:
由于ansible管理机器都是通过ssh,而ssh则为我们提供了一个agent forward功能,我们可以借助这个功能来解决上述问题。
三.测试环境:
ansible机器: 10.250.0.90
跳板机 : 119.27.168.100
内网机器 : 10.139.165.32
需要用到的软件: keychain
使用及下载链接: https://www.funtoo.org/Keychain
github地址: https://github.com/funtoo/keychain/releases
四.配置ansible机器通过ssh forward模式使用秘钥key 经过堡垒机转发直接登录跳板机。(秘钥的生成都是在ansible机器上)
- 生成密钥对,供ansible机器登录跳板机。
[root@localhost ~]# ssh-keygen
2.将对应的公钥拷贝到跳板机。
[root@localhost ~]# ssh-copy-id -i /root/.ssh/tiaobanji_id_rsa.pub python@119.27.168.100 -p
3.生成第二个密钥对,供登录后端机器用。方法同4.1
[root@localhost ~]# ssh-keygen
4.将刚生成的密钥对的公钥手动拷贝到后端的10.139.165.32机器的认证文件中
将/root/.ssh/10.139.165.32_id_rsa.pub中的内容复制到10.139.165.32机器/home/python/.ssh/authorized_keys 如果没有就手动穿件一个这个文件。注意权限
authorized_keys 权限为600 所属组及所属用户是python
.ssh的权限是700 所属组及所属用户是python
5.在ansible机器上配置ssh连接文件。(后面指定这个文件连接后端机器)
[root@localhost ~]# vim ssh_config
Host 10.139.165.32
User python
Port
ForwardAgent yes
ProxyCommand ssh -qaY -i /root/.ssh/tiaobanji_id_rsa python@119.27.168.100 -p 'nc -w 14400ms %h %p' IdentityFile /root/.ssh/10.139.165.32_id_rsa
五.使用keychain及ssh-agent ssh-add来管理key
1.下载安装keychain
github地址: https://github.com/funtoo/keychain/releases
wget https://codeload.github.com/funtoo/keychain/tar.gz/2.8.4
tar -xzvf 2.8.4
cd keychain-2.8.4/
install -m0755 keychain /usr/bin
2.修改.bash_profile文件
[root@localhost keychain-2.8.]# vim ~/.bash_profile
在文件最后添加如下行:
eval `keychain --eval --agents ssh /root/.ssh/10.139.165.32_id_rsa /root/.ssh/tiaobanji_id_rsa` #这里将需要使用的私钥都写到里面,空格隔开
添加好后退出当前会话,重新连接ansible机器,会提示你将私钥添加到管理,输入对应的秘钥。
添加好后每次进入会是如下情况:
可以通过ssh-add命令来管理秘钥 -l 查看 -d删除 跟key添加
[root@localhost ~]# ssh-add -l
SHA256:WIfFa/cxyGpP9w4Wc2/rja2NgmoqhQlVyBM+yWAYXKE /root/.ssh/10.139..32_id_rsa (RSA)
SHA256:oiXSY73sCgQ+7vEr/ssVQGJsuPPDtSUfIKEvW2KWo0Q /root/.ssh/tiaobanji_id_rsa (RSA)
六.指定ssh_config文件进行连接测试 (ssh_config为上面我们配置的文件)
[root@localhost ~]# ssh -p 10.139.165.32 -F ssh_config
Last login: Tue Mar :: from 113.81.197.164
[python@heaven- ~]$
从上面的执行结果可以看出我们已经成功的从ansible机器登录到了跳板机后端的机器,当这里连接成功后使用ansible管理就很容易了。
七.配置ansible /etc/ansible/ansible.cfg文件,添加ssh连接使用我们配置的文件连接。
添加如下配置:
ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s -F /root/ssh_config
八.添加后端机器到ansible的inventory文件 。我这里使用的是默认的/etc/ansible/hosts
九.使用ansible管理测试
成功!!!
参考文章:
https://www.linuxidc.com/Linux/2011-08/39872.htm
https://www.funtoo.org/Keychain
ansible 通过堡垒机/跳板机 访问目标机器需求实战(ssh agent forward)的更多相关文章
- 运维堡垒机(跳板机)系统 python
相信各位对堡垒机(跳板机)不陌生,为了保证服务器安全,前面加个堡垒机,所有ssh连接都通过堡垒机来完成,堡垒机也需要有 身份认证,授权,访问控制,审计等功能,笔者用Python基本实现了上述功能. A ...
- 【自动部署】Ansible 怎么通过堡垒机/跳板机 访问目标机器
Ansible机器的 /root/.ssh/config 配置如下即可:Host 目标机器IP User root IdentityFile=/root/.ssh/xxx_id_rsa ProxyCo ...
- Xcode6.3真机测试无法选择目标机器问题
Xcode刚刚升级到了6.3版本,但是真机测试出现了一点问题.对于某些手机无法选中,如下: 上图中的“xxoo的iPhone”无法选中,不过这个问题在stackoverflow中有解答,可以通过其他手 ...
- 【转】SSH穿越跳板机:一条命令跨越跳板机直接登陆远程计算机
转自:http://mingxinglai.com/cn/2015/07/ssh-proxycommand/ 今天在公司搭建跳板机,遇到一个比较麻烦的问题,这里简单记录一下,希望对有相同问题的人有所帮 ...
- SecureCRT自动登录跳板机/堡垒机并连接目标机器
公司登录目标服务器,需要先登录跳板机(堡垒机),然后再登录目标机器,一共需要4.5步. MAC或LINUX机器可以写.SH脚本,那WINDOWS有没有一键登陆的方法呢? 常用的SecureCRT工具就 ...
- (四)ansible 通过堡垒机访问内网服务器
场景: 在ansible的使用过程中,存在这样的场景,ansible所在的管理节点与被管理的机器需要 通过一个跳板机才能连接,无法直接连接.要解决这个问题,并不需要在 ansible里做什么处 ...
- mysql ssh 跳板机(堡垒机???)连接服务器
跳板机(Jump Server),也称堡垒机,是一类可作为跳板批量操作远程设备的网络设备,是系统管理员或运维人员常用的操作平台之一. 正常的登录流程 使用ssh命令登录跳板机: 登录跳板机成功后,在跳 ...
- CentOS 7 搭建Jumpserver跳板机(堡垒机)
跳板机概述: 跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作 跳板机缺点:没有实现对运维人员操作行为的控制和审计,使用跳板机的过程中还是 ...
- linux Jumpserver跳板机 /堡垒机详细部署
关于跳板机/堡垒机的介绍: 跳板机的定义: 跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作: 跳板机缺点: 没有实现对运维人员操作行为的 ...
随机推荐
- 《剑指offer》面试题21—包含min函数的栈
题目:定义栈数据结构,并在该数据结构中实现一个能获得栈最小元素的函数min.要求push,min,pop时间都是O(1). 思路:要用一个辅助栈,每次有新元素压栈时辅助栈压入当前最小元素:min函数直 ...
- Mac下安装rJava,xlsx,ReporteRs包
xlsx包可以用来读取excel数据,ReporteRs包可以用来直接输出word报告,这两个包都对rJava包有依赖,所以必须先安装rJava. (1)查看mac的java信息 java版本: &g ...
- vue父子组件路由传参的方式
一.get方式(url传参): 1.动态路由传参: 父组件: selectItem (item) { this.$router.push({ path: `/recommend/${item.id}` ...
- qsc52(三角形线性插值)
题目链接:http://qscoj.cn/problem/52/ 题意:中文题诶- 思路:水题,只要知道三角形插值和判断点在三角形内就OK了 关于三角形插值:http://www.cnblogs.co ...
- uoj#228. 基础数据结构练习题(线段树)
传送门 只有区间加区间开方我都会--然而加在一起我就gg了-- 然后这题的做法就是对于区间加直接打标记,对于区间开方,如果这个区间的最大值等于最小值就直接区间覆盖(据ljh_2000大佬说这个区间覆盖 ...
- Mac PyCharm2018破解
1.下载破解补丁 https://link.jianshu.com/?t=http%3A%2F%2Fidea.lanyus.com%2Fjar%2FJetbrainsCrack-2.7-release ...
- 解决 程序报 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 错误
调试程序出现如下错误: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Default ...
- js中的面向对象程序设计
面向对象的语言有一个标志,即拥有类的概念,抽象实例对象的公共属性与方法,基于类可以创建任意多个实例对象,一般具有封装.继承.多态的特性!但JS中对象与纯面向对象语言中的对象是不同的,ECMA标准定义J ...
- Js 实现全屏
<input id="Button1" type="button" value="开始全屏" onclick="kaishi ...
- 题解 UVA11354 【Bond】
并查集+按秩合并 传送门 大意:给出一张n个点m条边的无向图, 每条边有一个权值,有q个询问, 每次给出两个点s.t,找一条路, 使得路径上的边的最大权值最小. 我们可以发现,跑最小生成树会跑挂, 那 ...