使用 ansible SSH 到远程服务器

2024-04-24

我正在使用 ansible 来自动化一些任务。其中之一要求我ssh到服务器A,然后从A到B,然后从B到C。我似乎找不到任何方法来做到这一点。有什么建议么?


鉴于您不使用 Paramiko 进行 ssh (transport = ssh https://docs.ansible.com/ansible/latest/reference_appendices/config.html#default-transport),Ansible将充分利用您的~/.ssh/config。因此,您可以在 ssh 配置中全局定义所有连接规则。

如果由于某种原因您希望 Ansible 不使用默认的 ssh 配置而是提供单独的配置,您可以在您的ansible.cfg:

[ssh_connection]
ssh_args= -F "/path/to/ssh/config/specifically/for/ansible"

然后在您的 ssh 配置中设置连接规则。坚持你的例子:

Host HostA
  HostName real-host-name-A.com

Host HostB
  HostName real-host-name-B.com
  ProxyCommand ssh -q HostA nc %h %p

Host HostC
  HostName real-host-name-C.com
  ProxyCommand ssh -q HostB nc %h %p
  • 与 A 的连接是直接的
  • 到 B 的连接经过 A
  • 到 C 的连接经过 B,B 又经过 A
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ansible SSH 到远程服务器 的相关文章

  • 通过 ssh 发送命令并读取输出结果

    我有代码通过 ssh 连接到远程服务器并向其发送 2 个或更多命令 例如 cd export home ops bin和 viewlinkload time 20131205 19 但我没有看到命令执行 也没有收到结果 我需要获取服务器返回
  • 如何从 Ansible 模块获取当前主机名?

    我正在开发自定义 Ansible 模块来控制 Vagrant 控制多个 VM 服务器上的多个 VM 节点 遵循指南https docs ansible com ansible latest dev guide developing modu
  • 使用 pscp 命令时出现“未找到命令”

    我正在使用 PuTTY pscp 将项目文件夹传输到 AWS 实例 我可以使用 ppk 公钥文件进行连接并且ssh命令成功打开并登录 这里我使用命令来传输文件夹 pscp r i C path to my keys converted pe
  • 无法在 PHP 中使用 SFTP

    我正在用 PHP 编写一个简单的 SFTP 客户端 因为我们需要通过 n 个远程服务器以编程方式检索文件 我正在使用 PECL SSH2 扩展 不过 我遇到了障碍 php net 上的文档建议您可以这样做 stream fopen ssh2
  • 如何使用ansible运行询问用户输入的脚本?

    我想使用 ansible 运行 shell 脚本 但 shell 脚本需要用户输入才能成功执行 例如 我的 shell 脚本询问唯一的 idossec agent 通过ansible我可以预定义我的unique id user input
  • 从 Ansible 中的文件结果中提取文件名

    我正在尝试使用 Ansible 的结果find模块 它返回在特定文件夹中找到的文件列表 问题是 当我迭代结果时 我没有文件名 我只有它们的完整路径 包括名称 有没有一种简单的方法来使用find result item下面提供file nam
  • 在 Windows 上为 Bitbucket 设置 SSH 密钥

    首先 我对 git repos 和命令行绝对是菜鸟 我在 Bitbucket 上有仓库 我基本上希望能够通过 gitbash 推送到存储库 而无需每次输入密码 我拥有的 Bitbucket 上的存储库已设置好代码 克隆存储库的本地目录 通过
  • 无法在 Windows 7 中为 heroku 生成 ssh 公钥

    当我努力的时候heroku login通过我机器上的cmd 它说 找不到现有的公钥您想生成一个吗 YN 之后 当我按 y 并输入时 它会说 生成新的 ssh 公钥无法生成密钥 ssh keygen 未被识别为内部或外部命令可操作程序或批处理
  • 无需代理转发的 SSH 跳转主机

    虽然是一个简单的问题 但我已经搜索了几天没有成功 M My machine J Jump Host S Server Jump Host has my public key on authorized keys Server has J s
  • 如何使用ansible扩展Windows路径变量

    使用 win environment 可以向 Windows 主机添加 删除环境变量 但是要修改已经存在的变量 win environment 似乎没有用 因为您无法读取旧值来修改和更新变量 正确的 EDIT 从 Ansible 2 3 开
  • ansible playbook失败:超时(12秒)等待权限升级提示:“}

    我正在尝试在虚拟机上自动执行一些手动任务 作为其中的一部分 我的虚拟机没有直接的根访问权限 所以我必须使用不同的用户 然后升级到root 当我尝试切换到 root 用户时 密码提示与默认提示不同 我看到的提示如下图 user1 vm 1 t
  • 有没有办法使用正则表达式来匹配ansible中的主机?

    我正在尝试使用正则表达式模式与 ansible 匹配主机 但它没有按预期工作 我的库存情况如下 group1 hello1 world1 hello2 world2 group2 hello3 而我的任务是 debug msg item w
  • 在 %PATH% 的任何目录中都找不到 `ssh` 可执行文件

    ERROR c Users dhawal vora gt vagrant ssh ssh executable not found in any directories in the PATH variable Is an SSH clie
  • 在没有 paramiko 的情况下通过 python 运行 ssh 时,“伪终端不会被分配,因为 stdin 不是终端”

    我在 Python 中运行 ssh 而不使用像 Paramiko 这样的外部库 我这样做有我的理由 而不是通过外部库 基本上我正在做subprocess Popen ssh t bla command 执行此操作时我收到以下消息 Pseud
  • 如何通过ssh获取远程命令的退出代码

    我正在通过 ssh 从远程计算机运行脚本 ssh some cmd my script 现在 我想在本地计算机上存储 shell 脚本的退出状态 我该怎么做 假设没有任何问题ssh其本身 其退出状态是在远程主机上执行的最后一个命令的退出状态
  • Ansible 创建可以访问所有表的 postgresql 用户?

    这应该很简单 我想要创建一个 Ansible 语句来创建一个 Postgres 用户 该用户具有特定数据库的连接权限以及对该特定数据库中所有表的选择 插入 更新 删除权限 我尝试了以下方法 name Create postgres user
  • 有没有办法验证 Ansible Inventory 文件中组的主机数量?

    我的要求如下所示 我有一个 Ansible 库存文件 它根据如下所示的组件分为几个组 all node1 node2 node3 node4 webapp node3 node4 ui node1 如果条件失败 则有没有办法验证清单文件中组
  • 如何使用 Ansible 设置环境变量

    我需要设置变量 例如JAVA HOME并更新PATH 有多种方法可以做到这一点 一种方法是更新 etc environment变量并包含一行JAVA HOME使用文件行 http docs ansible com ansible linei
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终

随机推荐