如何修复 Ansible 错误"与 x.x.xx 的共享连接已关闭"?

linuxoperating systemopen source

简介

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

修复错误步骤概述

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

解决方案包括了解不同设备之间的 SSH 连接工作原理,找出这些连接突然终止的可能原因(例如网络问题或防火墙限制),并相应地更新本地设备以及远程目标服务器的配置文件。仔细遵循这些步骤,您应该能够快速修复此问题,而不会遇到任何其他问题!

了解错误

错误原因

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

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

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

错误症状

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

  • 剧本中的任务失败

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

  • 执行任务时性能缓慢

  • 错误消息涉及断开的连接,例如"对等方重置连接"

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

故障排除步骤

"与 x.x.xx 的共享连接已关闭"Ansible 错误是任何网络中都可能出现的常见问题。要解决此问题,需要遵循以下步骤。

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

检查网络连接

遇到与 x.x.xx 的共享连接问题时,首先要检查的是网络连接。可以使用不同的方法进行检查,例如 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 服务可能会解决问题。

要在目标计算机上重启 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 配置问题。


相关文章


有用资源