• 一. 需求背景:

在我们使用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机器上)

  1. 生成密钥对,供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)的更多相关文章

  1. 运维堡垒机(跳板机)系统 python

    相信各位对堡垒机(跳板机)不陌生,为了保证服务器安全,前面加个堡垒机,所有ssh连接都通过堡垒机来完成,堡垒机也需要有 身份认证,授权,访问控制,审计等功能,笔者用Python基本实现了上述功能. A ...

  2. 【自动部署】Ansible 怎么通过堡垒机/跳板机 访问目标机器

    Ansible机器的 /root/.ssh/config 配置如下即可:Host 目标机器IP User root IdentityFile=/root/.ssh/xxx_id_rsa ProxyCo ...

  3. Xcode6.3真机测试无法选择目标机器问题

    Xcode刚刚升级到了6.3版本,但是真机测试出现了一点问题.对于某些手机无法选中,如下: 上图中的“xxoo的iPhone”无法选中,不过这个问题在stackoverflow中有解答,可以通过其他手 ...

  4. 【转】SSH穿越跳板机:一条命令跨越跳板机直接登陆远程计算机

    转自:http://mingxinglai.com/cn/2015/07/ssh-proxycommand/ 今天在公司搭建跳板机,遇到一个比较麻烦的问题,这里简单记录一下,希望对有相同问题的人有所帮 ...

  5. SecureCRT自动登录跳板机/堡垒机并连接目标机器

    公司登录目标服务器,需要先登录跳板机(堡垒机),然后再登录目标机器,一共需要4.5步. MAC或LINUX机器可以写.SH脚本,那WINDOWS有没有一键登陆的方法呢? 常用的SecureCRT工具就 ...

  6. (四)ansible 通过堡垒机访问内网服务器

    场景:     在ansible的使用过程中,存在这样的场景,ansible所在的管理节点与被管理的机器需要 通过一个跳板机才能连接,无法直接连接.要解决这个问题,并不需要在 ansible里做什么处 ...

  7. mysql ssh 跳板机(堡垒机???)连接服务器

    跳板机(Jump Server),也称堡垒机,是一类可作为跳板批量操作远程设备的网络设备,是系统管理员或运维人员常用的操作平台之一. 正常的登录流程 使用ssh命令登录跳板机: 登录跳板机成功后,在跳 ...

  8. CentOS 7 搭建Jumpserver跳板机(堡垒机)

    跳板机概述: 跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作 跳板机缺点:没有实现对运维人员操作行为的控制和审计,使用跳板机的过程中还是 ...

  9. linux Jumpserver跳板机 /堡垒机详细部署

    关于跳板机/堡垒机的介绍: 跳板机的定义: 跳板机就是一台服务器,开发或运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作: 跳板机缺点: 没有实现对运维人员操作行为的 ...

随机推荐

  1. monkey无规则压力测试

    例:monkey -p com.tencent.mtaexample -s 23  --throttle 100 --ignore-crashes --ignore-timeouts -v -v -v ...

  2. encodeURI和uncodeURIComponent的介绍

    encodeURI.decodeURI encodeURI.decodeURI 对字符转义:不替换特殊字符有18个.(大小写)字母.数字. 替换目标 将字符替换为 HTML URL编码 替换范围 A- ...

  3. 大整数因子(高精mod)

    大整数的因子 总时间限制:  1000ms 内存限制:  65536kB 描述 已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k. 输入 一个非 ...

  4. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:7. 服务调用

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

  5. Unity 播放的声音比声音文件小很多-AudioListener-AudioClip

    今天做愤怒的小鸟时,播放的时候非常非常小,怎么也查不到原因,就去问群里的大佬.原来, 播放音乐的方法: AudioSource.PlayClipAtPoint(audioclip, transform ...

  6. SQL Server插入中文乱码

    如果数据库的Collocation是英文的,字段是varchar类型,向表中插入中文数据,会出现乱码. 解决方法: 方法1. 修改varchar 为 nvarchar类型, 并在插入数据前加N,例如: ...

  7. IBM Websphere MQ常用命令及常见错误

    MQSC: MQ Script Command  (不区分大小写) 注明: 下面命令行中的队列管理器名字,队列名字分别用QmgrName, QName替代. 下面标蓝色的,都需要根据实际配置更改! 打 ...

  8. PAT甲级——1107 Social Clusters (并查集)

    本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/90409731 1107 Social Clusters (30  ...

  9. HDU1296 Polynomial Problem

    http://acm.hdu.edu.cn/showproblem.php?pid=1296 随手练习 #include <bits/stdc++.h> using namespace s ...

  10. 前端CSS(3)

    前端基础CSS(3)   一.文本属性和字体属性(常用的) 1.文本属性 text-align:left|right|center|justify(两端对齐,只适用于英文);   /*对齐方式*/ c ...