PuTTY 网络错误:软件导致连接中止

PuTTY 网络错误:软件导致连接中止

我遇到了一个奇怪的问题:当我使用 PuTTY 和 SSH 连接到托管在VMware在我的本地Windows 7的,我经常会收到错误消息"Network error: Software caused connection abort",然后 PuTTY SSH 窗口处于非活动状态。通常我可以使用 PuTTY 登录服务器并执行某些操作,但经过一段随机时间(大约一两分钟)后,我就会收到该错误。有时我甚至无法登录,并收到错误消息,提示超时。

我猜我的 VMware Player 出了问题,因为我有另一个 Ubuntu 桌面托管在 VMware 中作为代码存储库服务器,当我执行 SVN 更新/提交时,它经常出现超时错误。但是,我还猜 Windows 7 也有一些怪癖,因为托管在 VMware 中的相同 Ubuntu 服务器作为代码存储库在 Windows Vista 上运行得很好!似乎所有不好的事情都发生在我从 Windows XP 迁移到 Windows Vista 然后再迁移到 Windows 7 之后!

造成该问题的原因是什么以及如何解决?

补充

我进行了 Google 搜索并应用了所有方法来提供帮助,包括:

  1. 启用 sshdTCPKeepAlive
  2. 将sshd设置ClientAliveInterval900ClientAliveCountMax3
  3. 将 PuTTY 连接设置“保持连接之间的秒数”设置为5

但这些都不起作用!而且一段时间后,PuTTY 中的 SSH 会话仍然会中断!

我关闭了 Linux 服务器防火墙和 Windows 7 客户端防火墙,但登录仍然超时!这真的很烦人!

好像有时候我可以登录,但有时候登录超时!我真的不知道为什么。这让我很抓狂!

必须要提的一件事是,当我使用 PuTTY SSH 连接到远程服务器时,一切正常!

当我无法登录时,ping 也失败了!但是,这怎么会发生呢?我使用 VMware Player 在本地计算机上托管 Linux 服务器!

答案1

仅限 Windows XP 或更早版本的操作系统:

我 9 年前为 Windows XP 写了这个答案,Putty 软件已经有 21 年的历史了,所以这个答案对于历史目的很有用。Windows 当前基于智能手机的 Zune-OS for Desktop 已经在网络层面上破坏了 Putty,其目的是消除所有不属于付费 Azure 供应商工具堆栈的入口或出口点。

Putty 有一个功能可以尝试修复这个问题:

Network Error: Software caused connection abort
  1. 启动 Putty
  2. 如果已保存连接设置,请加载它们
  3. 点击“连接”
  4. 在“发送空数据包以保持会话处于活动状态”部分,将其更改为 5 秒。如果您遇到的是网络中断问题,则 300 秒可能会更好,请阅读下文了解详情。

在此处输入图片描述

如何通过 Putty 保持连接以防止断开连接:

某些网络路由器和防火墙需要跟踪通过它们的所有连接。通常,如果在一定时间间隔后没有数据传输,这些防火墙会认为连接已断开。如果一段时间内没有看到会话中的流量,这可能会导致防火墙意外关闭 PuTTY 会话。

keepalive 选项(“keepalive 间隔秒数”)允许您配置 PuTTY 以定期通过会话发送数据,这样不会中断实际的终端会话。如果您发现防火墙正在切断空闲连接,您可以尝试在此字段中输入非零值。该值以秒为单位;因此,例如,如果您的防火墙在十分钟后切断连接,那么您可能需要在框中输入 300 秒(5 分钟)。

使用 putty 自动登录和“screen”工具减少问题

Putty 无法处理一次断网几分钟的糟糕 wifi。解决方法是使用自动登录和屏幕。

在互联网连接中断一分钟后,Putty 重新同步您的终端是一个不小的问题。在中断期间,您会面临中间人攻击的风险。无论如何,您都必须重新验证身份以确保安全。Putty 不会强加给您这个要求,它只是让您放弃连接。

因此使用自动登录,这样 Putty 就可以代表您自动登录。

  1. 生成私钥使用 puttygen 工具在你使用 Putty 的计算机上。
  2. 将公钥粘贴到/home/youruser/.ssh/authorized_keys服务器端,即您使用 putty go 登录的服务器上。
  3. 在 putty 设置 Connection->SSH->Auth 中使私钥可供 putty 访问
  4. 通过在“用于身份验证的私钥文件”下指定私钥文件来添加私钥。
  5. 保存 putty 连接设置。

然后您将能够通过 putty 双击您的连接,它会直接带您进入终端而无需输入用户名/密码。

因此,现在您可以使用键盘组合(例如)在该连接上挂接 Putty 登录F6。因此,当 wifi 信号不好而您掉线时。按下 F6 即可重新登录。

但您仍然会丢失终端的状态!如何解决?使用“screen”程序。输入“screen”创建一个新屏幕。这样就创建了一个新屏幕。

当你被踢出并自动登录时,你可以重新连接到你的屏幕。以下是有关如何操作的教程:http://www.tecmint.com/screen-command-examples-to-manage-linux-terminals/

screen每次掉线后都要输入并重新连接,这很麻烦。因此,您可以编写一个脚本,让其“自动带您回到上一个可用屏幕”,使其变得透明。

那么当 Putty 终端冻结时。它看起来是这样的:你轻蔑地哼了一声,按下 Alt+F4 关闭 Putty,按下 F6。6 秒钟后,你又回到了你离开的地方。

理论上更好的解决方案

理论上,你可以编写整个上述过程的脚本,这样终端就可以检测到何时断线,并在恢复互联网连接时为你执行上述所有步骤。如果有人知道一个可以自动执行此操作的程序,请告诉我。那会很棒。

资料来源:

http://the.earth.li/~sgtatham/putty/0.58/htmldoc/Chapter4.html#config-keepalive

http://rafaelwolf.com/?p=516

答案2

排除 PuTTY 网络错误

Software caused connection abort

阅读 PuTTY 对错误的评论

这是 Windows 网络代码在因某种原因终止已建立的连接时产生的一般错误。例如,如果您从以太网连接的计算机背面拔出网线,或者 Windows 有任何其他类似原因认为整个网络已无法访问,则可能会发生这种情况。

如果 Windows 放弃响应连接的另一端的计算机,它也会生成此错误。如果客户端和服务器之间的网络出现故障,然后客户端尝试发送一些数据,Windows 将多次尝试发送数据,然后放弃并终止连接。特别是,如果您使用 SSH-2 并且 PuTTY 尝试重新交换密钥,即使您没有输入任何内容,也可能发生这种情况。

(如果您在连接中使用 keepalive,也可能会发生这种情况。其他人报告说 keepalive 可以为他们修复此错误。(keepalive 有优点也有缺点。))

我们不知道导致此错误的任何原因,该错误可能表示 PuTTY 存在错误。问题出在您、您的 Windows 系统、您的网络和远程系统之间。

尝试不同的 SSH 客户端

问题很可能存在于 PuTTY 和目标 SSH 服务器之间。为了提供证据,请使用其他 SSH 客户端,例如 (http://kitty.9bis.net),看看问题是否也发生在那里。很可能会发生,这将使问题与 PuTTY 隔离开来。

怀疑网络连接不稳定

问题可能出在不稳定的互联网连接上。互联网连接监控互联网连接的正常运行时间是确定您的 ISP 是否丢失数据包并导致 PuTTY 宕机的好方法。获取一些测试互联网连接正常运行时间的软件。例如,http://code.google.com/p/internetconnectivitymonitor/频繁且长时间断网违反了 ISP 的服务要求。如果是这种情况,很难证明这是 ISP 的错,因为技术支持会自动将这些问题归咎于您的计算机、操作系统、路由器和家庭布线。如果您使用有线互联网并住在偏远地区,那么邻居家中的硬件故障可能会导致他们第一次打开时线路上有几秒钟/几分钟的静电。最后,您家的 ISP 网络中可能有故障硬件。ISP 更换硬件的成本非常高,因此除非某个地区的用户数量足以支付得起这笔费用,否则他们通常不会这么做。

怀疑有线/无线路由器

您是通过有线/无线路由器连接的吗?路由器有多旧?问题可能出在您的路由器上。旧的无线和有线技术可能会老化,并偶尔断开连接并重新启动,从而导致 PuTTY 死机。从方程式中移除这些组件,看看是否能解决问题。尝试有线连接和/或其他路由器,看看是否能解决问题。我的 Linksys 无线路由器就遇到了这种缓慢死机、断开连接并重新启动的情况。

怀疑提供 SSH 连接的操作系统

您使用 SSH 连接的计算机有一个保持 SSH 连接活动的秒数策略。出于安全原因,此数字设置得较低,您可以增加它。此设置的位置取决于您使用的提供 SSH 的操作系统。

如果您通过虚拟机使用 PuTTY

如果您使用 PuTTY 通过虚拟机,则虚拟机上可能存在一个策略,当它认为服务器处于非活动状态时,它会断开与服务器的 SSH 连接。增加这些值取决于您使用的虚拟机软件和操作系统。

如果网络连接不好,SSH 客户端连接解决方​​法:

如果您的 ISP 提供的连接不稳定,那么您可以使用“ssh autologin”来减少断线的痛苦。您要做的就是生成公钥​​和私钥。然后告诉您的外部服务器自动让任何提供准确私钥的人进入。它不能完全解决您的问题,但是当互联网中断时,您所要做的就是关闭窗口,双击图标,然后您就会立即返回到主文件夹命令行,而无需输入用户名/密码。

这将帮助你: 有没有办法在 PuTTY 中使用密码“自动登录”?

答案3

在提升的命令提示符中,运行以下命令:

C:\Windows\system32>netsh int tcp show global

Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled

Chimney Offload State               : automatic

NetDMA State                        : enabled

Direct Cache Acess (DCA)            : disabled

Receive Window Auto-Tuning Level    : normal

Add-On Congestion Control Provider  : none

ECN Capability                      : disabled

RFC 1323 Timestamps                 : disabled

如果Receive Window Auto-Tuning Level正常,那么您会遇到问题。禁用它,然后一切都会像以前一样工作:

C:\Windows\system32>netsh int tcp set global autotuninglevel=disabled

答案4

错误网络错误:软件导致连接中止来自 PuTTY 的结果,如果有IP地址冲突(两台或多台计算机具有相同的 IP 地址)在网络上。(我在一台树莓派获得了由DHCP服务器是某些手动设置为使用相同 IP 地址的恶意设备/计算机。)

在这种特殊情况下,可能是 Windows 7 计算机本地或网络上其他设备的 IP 地址冲突。Wireshark可以用来成功追踪此类错误。

相关内容