如何在Ansible中轻松实现复杂SSH跳转?这个参数搞定

admin 2025年1月12日20:59:11评论10 views字数 1963阅读6分32秒阅读模式

 

在日常的运维工作中,我们经常会遇到需要通过跳板机来访问目标主机的情况。那么,如何高效地配置Ansible以支持多级跳转或复杂的 SSH 设置呢?ansible_ssh_common_args 提供了一个非常灵活的解决方案。在这篇文章中,我们将详细探讨它的功能,并通过一些实际案例来帮助你快速上手。希望这些内容能对你有所帮助!

如何在Ansible中轻松实现复杂SSH跳转?这个参数搞定

什么是ansible_ssh_common_args

ansible_ssh_common_argsAnsible中用于定义SSH额外参数的变量。这些参数会在Ansible执行任务时传递给底层的ssh命令,从而实现定制化的连接配置。

常见用途

  1. 实现跳板机连接。
  2. 提供给ssh、sftp、scp命令的额外参数
  3. 调试SSH连接或指定特定的密钥文件。

基本语法和配置

ansible_ssh_common_args的值必须符合SSH的参数格式,例如-o选项

定义方式:

  1. hosts清单中配置:
[target]target_host ansible_host=192.168.2.101 ansible_ssh_common_args='-o ProxyCommand="sshpass -p password ssh  -W %h:%p -q  [email protected]"'

参数含义:

  • target_host: 主机组中的主机别名。

  • ansible_host: 指定目标主机的实际IP地址。

  • ansible_ssh_common_args:定义了AnsibleSSH连接时使用的额外参数 。

  • ProxyCommand 是SSH的一个选项,表示通过代理命令来处理连接。

  • sshpass: 是一个工具,用于通过明文密码非交互式地登录SSH。

  •  -W %h:%p : 将目标主机的地址%h和端口%p直接转发到跳板机 。

  • -q:静默模式,禁止显示SSH的警告信息。

  1. Playbook中定义:
-name:UseProxyJumptoaccesstargethosthosts:allvars:ansible_ssh_common_args:'-o ProxyCommand="sshpass -p password ssh  -W %h:%p -q  [email protected]"'tasks:-name:Pingtargethostping:
  1. ansible.cfg配置文件中全局定义:
[ssh_connection]ssh_args = -o ProxyCommand="sshpass -p password ssh  -W %h:%p -q  [email protected]"

实战案例:实现复杂SSH跳转

场景描述

我们有以下需求:

  1. 通过跳板机 192.168.1.253 访问目标主机 192.168.31.101

  2. 跳板机和目标主机的用户名和密码均不同。

  3. 未设置免密登录,需要提供密码。

案例 1:单级跳转

通过跳板机访问目标主机:

[target]target_host ansible_host=192.168.31.101 ansible_ssh_pass="didiplus558" ansible_ssh_common_args='-o ProxyCommand="sshpass -p  password ssh  -W %h:%p -q  [email protected]"'

运行命令:

ansible target_hosts -m ping -i hosts

运行成功如下图所示:

如何在Ansible中轻松实现复杂SSH跳转?这个参数搞定

案例 2:多级跳转

需要通过两级跳板机连接目标主机:

  1. 第一跳:通过 192.168.1.252

  2. 第二跳:通过 192.168.1.253

配置文件:

[target_hosts]host1 ansible_host=192.168.31.101 ansible_ssh_pass="password" ansible_ssh_common_args='-o ProxyCommand="sshpass -p  password ssh  -W %h:%p -q [email protected] -o ProxyCommand="sshpass -p  password ssh  -W %h:%p -q [email protected]""'

运行命令:

ansibletarget_hosts-mping-ihosts

ProxyCommand 实现了两级跳转,内嵌的ssh命令依次通过两个跳板机转发到目标主机。

总结

通过ansible_ssh_common_args,我们可以在Ansible中轻松实现复杂的SSH配置,包括多级跳板机跳转等。结合实际场景的灵活应用,可以大幅提升运维效率。希望通过本文的案例,你能熟练掌握该参数的使用,为日常工作带来更多便利!

原文始发于微信公众号(攻城狮成长日记):如何在Ansible中轻松实现复杂SSH跳转?这个参数搞定

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月12日20:59:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何在Ansible中轻松实现复杂SSH跳转?这个参数搞定https://cn-sec.com/archives/3622718.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息