如何修复 Ansible 错误“共享连接到 x.x.xx 已关闭”?


简介

Ansible 是一款开源自动化工具,IT 专业人员使用它来管理和配置系统、部署软件和编排任务。但是,有时在使用 Ansible 时,用户可能会遇到一条错误消息,提示“共享连接到 x.x.xx 已关闭”,这对于不熟悉该工具的用户来说可能会令人沮丧。此错误通常发生在用户尝试通过 SSH 使用 Ansible 连接到远程服务器,但连接突然终止时。

修复错误的步骤概述

好消息是,可以通过一些故障排除技巧和更改 Ansible 配置文件来解决此错误。在本文中,我们将逐步讨论如何修复“共享连接到 x.x.xx 已关闭”的 Ansible 错误。

解决方案包括了解不同机器之间 SSH 连接的工作原理,确定这些连接可能突然终止的原因(例如网络问题或防火墙限制),并相应地更新本地机器和远程目标服务器配置中的设置。通过仔细遵循这些步骤,您应该能够快速解决此问题,而不会在过程中遇到任何进一步的障碍!

了解错误

错误原因

Ansible 中的“共享连接到 x.x.xx 已关闭”错误可能是由多种因素引起的。其中一个主要原因是网络连接问题。当控制机器和目标主机之间的连接中断时,可能会触发此错误。

问题可能是由于网络缓慢或不稳定造成的,或者 DNS 解析、路由或交换机故障也可能导致此问题。此外,如果机器之间存在许多跳跃点,也可能导致延迟和数据包丢失。

此错误的另一个原因是防火墙限制。如果您的目标主机具有限制性的防火墙配置,该配置阻止了 Ansible 使用的某些端口上的流量,则通信将失败,并在控制台输出中导致此错误消息。

错误症状

“共享连接到 x.x.xx 已关闭”的 Ansible 错误表现为 Ansible playbook 运行突然终止,表明 SSH 会话在完成前异常终止。以下是一些您可能会观察到的常见症状:

  • 剧本中的任务失败

  • 执行过程中进程突然终止

  • 执行任务时的性能缓慢

  • 引用连接断开的错误消息,例如“连接被对端重置”

识别这些症状非常重要,因为它们可以作为线索来帮助诊断可能导致问题的原因,以便及时采取适当的补救措施。

故障排除步骤

共享连接到 x.x.xx 已关闭的 Ansible 错误是一个常见问题,可能出现在任何网络中。要解决此问题,需要遵循一些步骤。

这些步骤将有助于确定问题的根本原因,并为您提供解决方法。以下是一些故障排除步骤:

检查网络连接

遇到共享连接到 x.x.xx 已关闭的 Ansible 错误时,首先要检查的是网络连接。这可以通过多种方法完成,例如 ping 测试或 traceroute 测试。

Ping 测试

ping 命令用于检查网络上两台机器之间的连接。要执行此测试,请打开终端并键入 ping 后跟目标机器的 IP 地址。

如果成功,您将看到来自目标机器的响应。如果失败,您可能会收到指示数据包已丢失的消息。

Traceroute 测试

traceroute 命令用于通过显示从您的计算机或服务器到互联网上的另一台计算机或服务器的数据包所经过的路径来诊断网络中的问题。要执行此测试,请打开终端并键入 traceroute 后跟目标机器的 IP 地址。

检查防火墙限制

如果在执行这些测试时没有发现问题,则需要检查防火墙限制,这些限制可能阻止了运行 Ansible 的机器和目标机器之间的通信。

临时禁用防火墙

如果确实存在防火墙限制阻止了运行 Ansible 的机器和目标机器之间的通信,则临时禁用它可以允许进一步测试这是否是导致问题的原因。

添加规则以允许 Ansible 流量通过防火墙

如果在检查后防火墙限制仍然存在,则需要添加规则以允许 Ansible 流量通过防火墙,使用 Ansible 运行的端口。

检查 SSH 配置问题

另一个潜在问题是 SSH 配置问题。为了确保没有 SSH 配置问题,应执行以下检查:

验证 SSH 连接设置

确保使用了正确的用户名和密码组合。如果不是,请咨询系统管理员以获取正确的登录凭据。下一步是验证 SSH 是否在目标机器上运行。

您可以通过登录到目标机器并运行命令“ps aux | grep sshd”或“systemctl status ssh”来做到这一点。如果这些命令未能返回任何输出,则表示 sshd 服务未运行,应启动它。

修复共享连接到 x.x.xx 已关闭的 Ansible 错误

更新 Ansible 配置文件

更新 Ansible 配置文件是修复共享连接到 x.x.xx 已关闭的 Ansible 错误的最常见解决方案。其中一种方法是增加 ansible.cfg 文件中的超时值。

这是通过修改 ansible.cfg 文件中“ssh_connection”部分的“timeout”值来完成的。默认情况下,此值设置为 10 秒,对于网络连接缓慢或延迟高的系统来说可能不够。

增加此值将为 Ansible 提供更多时间来建立与远程机器的连接。更新 Ansible 配置文件的另一种方法是更改 ansible.cfg 文件中的 ssh_args。

此修改将在通过 SSH 连接时添加其他参数或选项,可用于解决与远程机器的 SSH 问题。例如,添加“-vvv”将在通过 SSH 连接时提高详细程度级别,并提供有关连接建立期间可能发生的任何问题的更多信息。

重启目标机器上的 sshd 服务

修复共享连接到 x.x.xx 已关闭的 Ansible 错误的另一个解决方案是重启目标机器上的 sshd 服务。有时,SSH 可能会因某些内部错误而卡住,重启它可能会解决这些错误。

要重启目标机器上的 sshd 服务,需要在该机器上拥有 root 访问权限或 sudo 权限。重启 SSH 的命令因 Linux 发行版的不同而异:

对于使用 SystemD 的系统:

systemctl restart sshd 

对于使用 SysVinit 的系统:

/etc/init.d/sshd restart 

确保…

更新配置文件并重启 sshd 服务后,务必确保所有必要的更改已正确应用并通过使用 Ping、traceroute 或 SSH 命令测试与远程机器的连接来进行验证。一个有用的测试 SSH 连接的命令是:

ssh -vvv target-machine 

此命令将与目标机器建立详细的 SSH 连接,并提供有关连接建立期间可能发生的任何错误的详细信息。务必确保对配置文件所做的所有更改都已正确记录,以便将来发生类似错误时更容易进行故障排除。

结论

修复共享连接到 x.x.xx 已关闭的 Ansible 错误需要多方面的方法。在尝试修复它之前,务必先了解错误的原因和症状。在更新 Ansible 配置文件或重启目标机器上的 sshd 服务之前,应先探索检查网络连接、防火墙限制和 ssh 配置问题的故障排除步骤。

更新于: 2023年6月12日

7K+ 阅读量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告