You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Ansible创建SSH隧道?现有配置连接跳板机超时求解决

Ansible 建立 SSH 跳板隧道的必要配置与排障建议

基础连通性检查

  • 首先确认发起隧道的被控主机(Ansible 任务的执行对象)可以正常访问跳板机 MyJumpHost 的 22 端口,可手动在被控主机执行命令验证:nc -zv MyJumpHost 22,超时问题90%以上都是安全组、防火墙未放通对应端口,或跨网路由不可达导致。
  • 确认跳板机 MyJumpHost 的入站规则放通了被控主机的IP访问22端口的权限。

服务端 SSH 配置要求

  • 跳板机 MyJumpHost 和最终目标主机 remoteHost 的 SSH 配置文件 /etc/ssh/sshd_config 需开启转发权限:
    • 确保 AllowTcpForwarding yes 配置已打开
    • 确保 PermitOpen 无额外限制(默认无限制即可)
    • 修改配置后执行 systemctl restart sshd 生效

本地密钥与权限配置

  • 被控主机上的认证密钥 /home/{{ inventory_hostname }}/.ssh/myPem.pem 权限必须为 600,属主需和执行 Ansible 任务的远程用户一致,可添加前置任务确保配置正确:
- name: 修正SSH密钥权限
  ansible.builtin.file:
    path: /home/{{ inventory_hostname }}/.ssh/myPem.pem
    mode: '0600'
    owner: '{{ ansible_user }}'
    group: '{{ ansible_user }}'
  • 确认该密钥的公钥已经同时添加到跳板机相应用户和 remoteHost 上 myUser 用户的 ~/.ssh/authorized_keys 文件中。

Ansible 任务优化

  • 原命令中的 " 是HTML转义字符,会导致参数解析错误,直接用原生引号即可,优化后的命令示例如下,同时添加超时和保活参数避免隧道意外断开:
tasks:
  - name: Open SSH Tunnel
    ansible.builtin.shell: 
      cmd: 'ssh -L *:3376:localhost:3306 -fN -o ConnectTimeout=10 -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -o "ProxyJump MyJumpHost" -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /home/{{ inventory_hostname }}/.ssh/myPem.pem myUser@remoteHost'
      executable: /bin/bash
    register: tunnel_result

调试方案

如果仍出现超时,可在ssh命令中添加 -v 参数输出详细连接日志,同时运行playbook时加上 -v 参数,即可定位是网络层问题还是认证、配置层面的问题。

内容的提问来源于stack exchange,提问作者Bix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:06:03