• 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机器上)

    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 2704

      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 2704         
    ForwardAgent yes    
    ProxyCommand ssh -qaY  -i /root/.ssh/tiaobanji_id_rsa  python@119.27.168.100 -p 2704 '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.4]# 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
    2048 SHA256:WIfFa/cxyGpP9w4Wc2/rja2NgmoqhQlVyBM+yWAYXKE /root/.ssh/10.139.165.32_id_rsa (RSA)
    2048 SHA256:oiXSY73sCgQ+7vEr/ssVQGJsuPPDtSUfIKEvW2KWo0Q /root/.ssh/tiaobanji_id_rsa (RSA)
    • 六.指定ssh_config文件进行连接测试 (ssh_config为上面我们配置的文件)

    [root@localhost ~]# ssh -p 2704 10.139.165.32 -F ssh_config
    Last login: Tue Mar 12 16:05:21 2019 from 113.81.197.164
    [python@heaven-00 ~]$                                        

    从上面的执行结果可以看出我们已经成功的从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

      



  • 相关阅读:
    控制TABLE的一些属性
    windows7中各个dll文件作用和用途
    left join on and与left join on where的区别
    号外,left join比连表语句快80倍
    JS跳转语句
    [jQuery,Dojo,MooTools]
    CYQ.Data 数据框架 V3.5 开源版本发布(源码提供下载)
    Scala开发小小总结
    性能测试工具原理与架构
    joomla1.5模块开发和插件开发详解带实例
  • 原文地址:https://www.cnblogs.com/heaven-xi/p/10484253.html
Copyright © 2020-2023  润新知