95

I have a strange problem: When I'm using PuTTY with SSH connecting to a Linux server hosted in VMware on my local Windows 7, I often get the error saying "Network error: Software caused connection abort" and then the PuTTY SSH window is inactive. Usually I can login in the server with PuTTY and do something, but after a random time (about one or two minutes) I get that error. And sometimes I even can't login, getting an error saying timeout.

I guess there's something wrong with my VMware Player, because I have another Ubuntu desktop hosted in VMware as a code repository server, and it more often than not has a timeout error when I do an SVN update/commit. However, I also guess Windows 7 has some quirk because the same Ubuntu server hosted in VMware as a code repository works very well when on Windows Vista! It seems all the bad things happen after I moved from Windows XP to Windows Vista and then Windows 7!

What could be the reason for this problem and how can it be fixed?

Supplement:

I did a Google search and applied all methods to help, including:

  1. Enable sshd TCPKeepAlive
  2. Set sshd ClientAliveInterval to 900 and ClientAliveCountMax to 3
  3. Set the PuTTY connection setting 'seconds between keepalives' to 5.

But these all don't work! And the SSH session in PuTTY still breaks after sometime!

I turned off both the Linux server firewall and Windows 7 client firewall, but login still times out! It is really annoying!

It seems sometimes I can log in, but sometimes login times out! I really don't know why. It drives me crazy!

One thing I have to mention is that when I'm using PuTTY SSH connecting to a remote server, and it's all OK!

When I failed to log in, ping failed too! But, how can that happen? I use VMware player to host the Linux server on my local machine!

8
  • Do you get this error when actively using the ssh connection? or after letting it sit inactive for a while?
    – MaQleod
    Jun 9, 2011 at 3:40
  • 1
    It's inactive for a wile. But sometimes I even can't login for timeout.
    – Robert
    Jun 9, 2011 at 3:47
  • 1
    I would check the session time-out settings for the SSH server.
    – MaQleod
    Jun 9, 2011 at 3:51
  • But more often than not, I even can't login the server from putty for timeout!
    – Robert
    Jun 9, 2011 at 5:51
  • 3
    Was this issue resolved? I tried most of the solutions listed below and nothing seems to work for me. Any other suggestions? I face the exact same issue as the original issue by Robert
    – user682765
    Jun 25, 2013 at 23:26

12 Answers 12

70

Windows XP or prior Operating system only:

I wrote this answer 9 years ago for Windows XP, Putty software is 21 years old and so this answer is useful for historical purposes. Window's current smartphone-based Zune-OS for Desktop has broken Putty at the network level, in pursuit of irritating away all points of entry or exit that are not part of the pay-for-play Azure Vendor tool stack.

Putty has a feature which attempts to fix this problem:

Network Error: Software caused connection abort
  1. Start Putty
  2. Load your connection settings if you have them saved
  3. Click on “Connection”
  4. On the section that says "Sending of null packets to keep session active", Changed it to 5 seconds. 300 seconds may be better if network outages are your problem, read below for details.

enter image description here

How keepalives to prevent disconnection with Putty:

Some network routers and firewalls need to keep track of all connections through them. Usually, these firewalls will assume a connection is dead if no data is transferred in either direction after a certain time interval. This can cause PuTTY sessions to be unexpectedly closed by the firewall if no traffic is seen in the session for some time.

The keepalive option (‘Seconds between keepalives’) allows you to configure PuTTY to send data through the session at regular intervals, in a way that does not disrupt the actual terminal session. If you find your firewall is cutting idle connections off, you can try entering a non-zero value in this field. The value is measured in seconds; so, for example, if your firewall cuts connections off after ten minutes then you might want to enter 300 seconds (5 minutes) in the box.

Reduce the problem using putty autologin and "screen" tool

Putty cannot handle a crappy wifi that loses connectivity for minutes at a time. A work around is to use autologin and screen.

It is a non trivial problem for putty to re synchronize your terminal after a minute long loss in internet connection. You run risks of man in the middle attacks during an outage. You would have to re-authenticate yourself anyway to make sure. Putty doesn't impose that on you, it just drops you.

So use autologin so putty can auto login on your behalf.

  1. Generate a private key with the puttygen tool on the computer you are putty with.
  2. Paste the public key in your /home/youruser/.ssh/authorized_keys on the server side, on the server that you are using putty go login to.
  3. Make the private key accessible to putty in the putty settings Connection->SSH->Auth
  4. Add the private key by specifying the private key file under: "Private key file for authentication".
  5. Save the putty connection settings.

Then you would be able to double click your connection through putty, and it should take you right in to the terminal without typing username/password.

So now you can hook a login to putty on that connection with a keyboard combination like F6. So when the wifi goes bad and you get dropped. You mash down F6 and you're back logged in.

BUT you still lose the state of your terminal! How to fix that? Use the "screen" program. Make a new screen by typing 'screen'. A new screen is created.

When you get kicked out and auto login, you can reattach to your screen. Here is a tutorial on how to do that: http://www.tecmint.com/screen-command-examples-to-manage-linux-terminals/

It's a hassle to type in screen and reconnect every time you get dropped. So you can write a script that will "auto bring you back to the last available screen" to make it transparent.

So then when the putty terminal freezes. It looks like this: You make a snort of contempt, mash down Alt+F4 to close putty, Mash down F6. And in 6 seconds you are back right where you left off.

Even better solution, in theory

In theory you could script out this entire above process, so the terminal detects when it has been dropped, and does all the above steps for you on restoration of the internet connection. If anyone knows a program that does this automatically let me know. It would be neat.

Sources:

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

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

4
  • Hello, I do this, but I still get the software connection closed error
    – tuskiomi
    Jun 6, 2017 at 4:08
  • Also, the seconds between keepalives cannot be saved for the next connection.
    – ZhaoGang
    May 30, 2019 at 3:32
  • if you are having trouble with step #2, there's a good solution here askubuntu.com/questions/306798/… Jan 12, 2020 at 6:41
  • It can @ZhaoGang. After setting it to "5" in Eric's step 4, you need to then click on "Session" and "Save". That will store the setting for next time you open the same connection.
    – Codemonkey
    Apr 1, 2020 at 9:18
13

Troubleshooting the PuTTY Network Error

Software caused connection abort

Read what PuTTY has to say about the error

This is a generic error produced by the Windows network code when it kills an established connection for some reason. For example, it might happen if you pull the network cable out of the back of an Ethernet-connected computer, or if Windows has any other similar reason to believe the entire network has become unreachable.

Windows also generates this error if it has given up on the machine at the other end of the connection responding to it. If the network between your client and server goes down and your client then tries to send some data, Windows will make several attempts to send the data and will then give up and kill the connection. In particular, this can occur even if you didn't type anything, if you are using SSH-2 and PuTTY attempts a key re-exchange.

(It can also occur if you are using keepalives in your connection. Other people have reported that keepalives fix this error for them. (There are pros and cons of keepalives.))

We are not aware of any reason why this error might occur that would represent a bug in PuTTY. The problem is between you, your Windows system, your network and the remote system.

Try a different SSH client

Most likely the problem exists somewhere between PuTTY and the target SSH server. To provide evidence for this, use a different SSH client like (http://kitty.9bis.net) and see if the problem happens on that as well. It probably will which will isolate the problem away from PuTTY.

Suspect spotty Internet connection

The problem may be the spotty Internet connection. Internet Connectivity Monitoring the uptime of an Internet connection is a good way of determining if your ISP are losing packets and is to blame for PuTTY going down. Get some software that tests the uptime of an Internet connection. For example, http://code.google.com/p/internetconnectivitymonitor/. Frequent and long disconnections from the Internet is a breach of ISP service requirements. If this is the case, it will be difficult to prove it's the ISP's fault, as tech support automatically blames these sorts of issues on your computer, OS, router, and wiring to your home. If you are using cable Internet and living out in the boonies, it could be possible that defective hardware in your neighbor's homes could be sending static on the line for a few seconds/minutes when they first turn it on. Finally, it's possible that there is defective hardware in the ISP's network to your home. The cost to ISPs to replace their hardware is so high, that often times they won't do it unless there are enough subscribers in an area to warrent the cost.

Suspect the wired/wireless router

Are you connecting through a wired/wireless router? How old is it? Your router might be the problem. Old wireless and wired technology can get old and drop connections sporadically and restart them, causing PuTTY to die. Remove these components from the equation and see if that solves the problem. Try a wired connection and/or different router to see if that fixes the problem. I had a Linksys wireless router suffer this slow death and drop connections and restart them.

Suspect the operating system providing the SSH connection

The computer you are connecting to with SSH has a policy for number of seconds to keep SSH connections alive. This number is set low for security reasons, and you could increase it. Where this setting is depends on what operating system you are using that provides SSH.

If you are using PuTTY through a virtual machine

If you are using PuTTY passing through a virtual machine, there may be a policy on the virtual machine which is breaking your SSH connection to the server when it thinks it is inactive. Increasing these values depends on which virtual machine software and operating system you are using.

If the Internet connection is bad, SSH client connection workarounds:

If your ISP provides an unstable connection then you could make the disconnections less painful with "ssh autologin". What you do is generate a public and private key. And you tell your foreign server to automatically let in anyone who provides an accurate private key. It doesn't solve your problem completely, but when the Internet outage happens, all you do is close the window, double click an icon, and you are immediately taken back to your home folder command line without entering a username/password.

This will help you with that: Is there a way to "auto login" in PuTTY with a password?

8

In an elevated command prompt, run the following:

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

If Receive Window Auto-Tuning Level is normal then you'll get issues. Disable it and then everything should work as it used to:

C:\Windows\system32>netsh int tcp set global autotuninglevel=disabled
6
  • 5
    can you explain why this works / what it does? Jul 21, 2013 at 4:43
  • 3
    support.microsoft.com/kb/947239 here is the description of this
    – bksi
    Aug 30, 2013 at 2:57
  • Doesn't help in my case. May 23, 2019 at 9:36
  • This has totally fixed my problem, thank you @user196773. We have 4 access points covering our house, and without fail when I walked from room to room and my laptop jumped APs, my SSH connections in PuTTY would die. This simple change (I should add that a restart seems to be necessary after making the change) fixed it for me. Thank you so much!
    – Codemonkey
    Nov 19, 2020 at 14:02
  • Had to do this again today, after a frustrating week of my laptop dropping PuTTY connections; I assume some windows update in the last year has reversed the change.
    – Codemonkey
    Mar 9, 2022 at 12:25
5

I worked with CentOS servers from Windows PCs, and I had the same problem with PuTTY. A session didn't last more than 1-5 minutes. I tried to play with PuTTY settings (keepalives, etc.) but it didn't help at all.

Finally I have found the solution for my case. I've recorded TCP dumps both on the client and the server. I've discovered that during 25-30 seconds before disconnecting there are several retransmissions of TCP segments in the client's dump (both from the client's and from the server's side) and finally PuTTY sends RST and close the session with that error. In the server's dump I didn't see any segments from the client in this period, even RST. It means that time to time no TCP segments from the client are delivered to the server and this period is about 30-60 seconds. I've recorded the case several times and always there were retransmissions and final RST from PuTTY. Probably somewhere on the route packets were dropped by network equipments.

To make a workaround I've increased the maximal number of data retransmissions from the default value 5 up to 16. It could prevent PuTTY from disconnection too fast. The variable is 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpMaxDataRetransmissions'. I've added this variable manually, it wasn't initially defined in the registy of my Windows. It did help! Now I see that PuTTY hangs from time to time, but it always comes back to work.

To fix the problem: 1. Record a TCP dump and look for retransmissions and RST before disconnecting. 2. If you find the same retransmissions/RST segments, adjust number of retries on a server or client side (it depends on the side of RST).

Be careful: changing of TCP settings applies to all software and the OS itself.

4

The error Network error: Software caused connection abort from PuTTY is the result if there is an IP address conflict (two or more computers have the same IP address) on the network. (I had this problem with a Raspberry Pi that got the same IP address assigned by the DHCP server as some rogue device/computer that was set up manually to use the same IP address.)

In this particular case it could be an IP address conflict locally on the Windows 7 computer or with another device on the network. Wireshark can be used to successfully track down this kind of error.

3

I had the same problem with PuTTY after installing a new WLAN router / 3G modem to connect to the Internet. I tried all the keep-alive solutions above - and all those in the configuration menu of my router - to no effect.

Then I remembered something from way back in the 90's when I had a land line phone modem: the MTU (maximum transmission unit), basically the maximum size of data chunks transferred - it had a notable effect on the stability of the connection.

So I checked the configuration of my WLAN router, found the MTU setting and changed it from a fixed value of 1424 to "Auto" (I meant to try a smaller value, but "Auto" sounded even better). After that, I've had no more problems with PuTTY - the connection is now rock solid. I hope this helps at least someone with the "Network error: software caused connection abort" problem.

3

Connection tab: keep alive set at "5" seconds and enabled

But more importantly:

Connection -> SSH -> Kex, Max minutes before rekey: "2" (default is 60).

My PuTTY was losing its key after a while, causing the timeout. Dropping that value to "2" minutes solved the problem. I stay connected indefinitely now.

2

The error 10053 WSAECONNABORTED (Software caused connection abort.) is a generic Winsock error that can be emitted due to any number of reasons.

The official explanation says:

This error can occur when the local network system aborts a connection, such as when Winsock closes an established connection after data retransmission fails (receiver never acknowledges data sent on a datastream socket).

The reasons for this issue can range from defective network cables to simple connectivity loss. It's impossible to offer a single solution.

2

I was actually facing this issues many times. I searched for solution spending hours but none of them was efficacious. I am sharing the solution that worked for me and I hope it will also be helpful to others.

I have Windows 10 as host O/S and Redhat-7 as guest O/S and my VMware had bridged connection. As DBA I have to visit clients and I have to set my networking configuration as per client premises. So whenever I leave the client premises and connect to another network via wireless and open VM I faced the same problem as stated in the question. So I thought for a while and checked my configuration for LAN Ethernet and Wireless Ethernet and I found a mismatch. As my VM would automatically use the physical ethernet among two for bridging. So when I reset the networking configuration for LAN/Wireless Ethernet to DHCP it worked like charm and no more connection abort. [You can also reboot your host machine after setting it to DHCP.]

1

I ran into same issue either with a WinSCP script or GUI console. Finally I found that's related to speed (Internet speed - our server is on the Internet). I moved the script to the different location in the network, different site, and not both GUI and Script went well.

It's been sorted out after lot of analysis and sorting.

0

You need to enable TCPKeepAlive on Linux.

It's explained in PuTTy's FAQ on the web site, when you're searching for this error.

3
  • But the default value for TCPKeepAlive is yes. However, I've enabled it. But the login timeout now is the first problem. Any ideas?
    – Robert
    Jun 10, 2011 at 2:09
  • I turned off both the linux server firewall and windows-7 client firewall, but login is still timeout! Really annoying!
    – Robert
    Jun 10, 2011 at 2:58
  • It seem sometimes I can login but sometimes login is timeout! I really don't know why. It drives me crazy!
    – Robert
    Jun 10, 2011 at 3:04
0

If the Virtual Machine is running on your local hardware disable keep alive packets.

2
  • 7
    Can you expand on the answer? Maybe give instructions for future visitors? Jan 10, 2013 at 18:52
  • I have the opposite situation as the OP -- my VM is the ssh client connecting to the host, and the client frequently disconnects. Disabling keep-alive seems to have solved the problem. I wonder why.
    – Raman
    Apr 18, 2013 at 23:24

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .