如何使用Ansible通过远程服务器向另一台远程服务器运行命令

时间:2020-06-09 17:42:19

标签: ansible

在我们的工作设置中,有一个remote server B只能通过远程服务器A进行访问。

  • 我如何从运行ansible的本地系统通过远程服务器A在远程服务器B上运行ansible命令/剧本,即 本地系统->远程服务器A->远程服务器B
  • remote server B可通过ssh通过remote server A访问。但是我无权访问remote server B
  • 的ssh键

这是我根据以下答案尝试在自己的stock.yaml文件中执行的操作

  hosts:
    remote-serverB:
  vars:
    ansible_connection: "ssh"
    ansible_user: "userB"
    ansible_ssh_common_args: '-o ProxyCommand="sshpass -p <password> ssh -W %h:%p -q userA@remote-serverA"' 

但是我从ansible收到以下错误

UNREACHABLE  {"changed": false, "msg": "EOF on stream; last 100 lines received:\nssh_exchange_identification: Connection closed by remote host\r", "unreachable": true}

1 个答案:

答案 0 :(得分:0)

这可以通过ansible_ssh_common_args完成。

ansible_ssh_common_args
此设置始终附加到sftp,scp和ssh的默认命令行中。为特定主机(或组)配置ProxyCommand很有用。

来源:https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#connecting-to-hosts-behavioral-inventory-parameters

以下是使用此配置的清单的示例,假设我的两个服务器都具有FQDN

  • remote-server-A
  • remote-server-B

,登录remote-server-A的用户是user-to-A

all:
  servers-needing-jump:
    hosts:
      remote-server-B:
  vars:
    ansible_ssh_common_args: '-o ProxyCommand="ssh -W %h:%p -q user-to-A@remote-server-A"'
相关问题