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

Rob*_*ert 90 linux vmware ssh timeout putty

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

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

这个问题的原因可能是什么,如何解决?

补充

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

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

但这些都行不通!PuTTY 中的 SSH 会话在一段时间后仍然中断!

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

好像有时可以登录,有时登录超时!我真的不知道为什么。它让我疯狂!

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

当我登录失败时,ping 也失败了!但是,怎么会这样呢?我使用 VMware 播放器在我的本地机器上托管 Linux 服务器!

Eri*_*ski 67

仅限 Windows XP 或之前的操作系统:

我在 9 年前为 Windows XP 写了这个答案,Putty 软件已经 21 岁了,所以这个答案对于历史目的很有用。Window 当前基于智能手机的桌面版 Zune-OS 已经在网络级别破坏了 Putty,旨在刺激所有不属于付费游戏 Azure 供应商工具堆栈的入口或出口点。

Putty 有一个功能可以尝试解决这个问题:

Network Error: Software caused connection abort
Run Code Online (Sandbox Code Playgroud)
  1. 启动腻子
  2. 如果您保存了连接设置,请加载它们
  3. 点击“连接”
  4. 在“发送空数据包以保持会话活动”部分,将其更改为 5 秒。如果网络中断是您的问题,300 秒可能会更好,请阅读以下详细信息。

在此处输入图片说明

keepalive 如何防止与 Putty 断开连接:

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

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

使用腻子自动登录和“屏幕”工具减少问题

Putty 无法处理一次失去连接数分钟的糟糕 wifi。解决方法是使用自动登录和屏幕。

在互联网连接丢失一分钟后,腻子重新同步您的终端是一个非同寻常的问题。在中断期间,您会面临中间人攻击的风险。无论如何,您都必须重新验证自己的身份以确保。Putty 不会强加给你,它只会让你失望。

所以使用 autologin 以便 putty 可以代表您自动登录。

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

然后你就可以通过 putty 双击你的连接,它应该会让你直接进入终端,而无需输入用户名/密码。

因此,现在您可以使用诸如F6. 所以当wifi坏了,你掉线了。您按下 F6 并重新登录。

但是您仍然会丢失终端的状态!如何解决?使用“屏幕”程序。通过键入“屏幕”创建一个新屏幕。将创建一个新屏幕。

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

screen每次掉线时输入并重新连接都很麻烦。因此,您可以编写一个脚本来“自动将您带回上一个可用的屏幕”以使其透明。

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

理论上更好的解决方案

从理论上讲,您可以编写上述整个过程的脚本,以便终端检测到它何时被丢弃,并在恢复互联网连接时为您执行上述所有步骤。如果有人知道自动执行此操作的程序,请告诉我。它会很整洁。

资料来源:

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

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


Eri*_*ski 12

PuTTY 网络错误故障排除

Software caused connection abort
Run Code Online (Sandbox Code Playgroud)

阅读 PuTTY 对错误的看法

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

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

(如果您在连接中使用 keepalive,也会发生这种情况。其他人报告说,keepalive 为他们修复了这个错误。(keepalive 有利有弊。))

我们不知道出现此错误的任何原因,这表示 PuTTY 中的错误。问题出在您、您的 Windows 系统、您的网络和远程系统之间。

尝试不同的 SSH 客户端

问题很可能存在于 PuTTY 和目标 SSH 服务器之间。要为此提供证据,请使用不同的 SSH 客户端(如 ( http://kitty.9bis.net ))并查看问题是否也发生在该客户端上。它可能会将问题与 PuTTY 隔离开来。

怀疑互联网连接不稳定

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

怀疑有线/无线路由器

您是否通过有线/无线路由器连接?它几岁了?您的路由器可能是问题所在。旧的无线和有线技术可能会老化并偶尔断开连接并重新启动它们,从而导致 PuTTY 死亡。从等式中删除这些组件,看看是否能解决问题。尝试有线连接和/或不同的路由器,看看是否能解决问题。我有一个 Linksys 无线路由器遭受这种缓慢死亡并断开连接并重新启动它们。

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

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

如果您通过虚拟机使用 PuTTY

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

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

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

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


小智 6

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

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
Run Code Online (Sandbox Code Playgroud)

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

C:\Windows\system32>netsh int tcp set global autotuninglevel=disabled
Run Code Online (Sandbox Code Playgroud)

  • 你能解释一下为什么这样做/它有什么作用吗? (5认同)
  • http://support.microsoft.com/kb/947239 这里是对此的描述 (3认同)

小智 5

我在Windows PC 上使用CentOS服务器,我在使用 PuTTY 时遇到了同样的问题。一节课不超过 1-5 分钟。我尝试使用 PuTTY 设置(keepalives 等),但它根本没有帮助。

最后,我找到了适合我的案例的解决方案。 我在客户端和服务器上都记录了 TCP 转储。我发现在断开连接之前的 25-30 秒内,客户端转储中的 TCP 段有几次重传(来自客户端和服务器端),最后 PuTTY 发送 RST 并关闭会话并显示该错误。在服务器的转储中,在此期间我没有看到来自客户端的任何段,甚至是 RST。这意味着有时没有来自客户端的 TCP 段被传送到服务器,这段时间约为 30-60 秒。我已经多次记录案例,并且总是有来自 PuTTY 的重传和最终 RST。可能是路由数据包的某个地方被网络设备丢弃了。

为了解决这个问题,我将最大数据重传次数从默认值 5 增加到 16。它可以防止 PuTTY 断开连接过快。变量是“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpMaxDataRetransmissions”。我手动添加了这个变量,它最初不是在我的 Windows 注册表中定义的。它确实有帮助!现在我看到 PuTTY 不时挂起,但它总是会恢复工作。

要解决此问题: 1. 记录 TCP 转储并在断开连接之前查找重传和 RST。2. 如果发现相同的重传/RST 段,则在服务器端或客户端调整重试次数(取决于RST 端)。

请注意:更改 TCP 设置适用于所有软件和操作系统本身。


小智 0

您需要TCPKeepAlive在 Linux 上启用。

\n\n

当您\xc2\xa0 搜索此错误时,网站上的 PuTTy 常见问题解答对此进行了解释。

\n


归档时间:

查看次数:

496076 次

最近记录:

6 年,5 月 前