Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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!

share|improve this question
    
Do you get this error when actively using the ssh connection? or after letting it sit inactive for a while? –  MaQleod Jun 9 '11 at 3:40
    
It's inactive for a wile. But sometimes I even can't login for timeout. –  Robert Jun 9 '11 at 3:47
1  
I would check the session time-out settings for the SSH server. –  MaQleod Jun 9 '11 at 3:51
    
But more often than not, I even can't login the server from putty for timeout! –  Robert Jun 9 '11 at 5:51
2  
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 '13 at 23:26

11 Answers 11

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 private 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

share|improve this answer

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 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 sending static 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 ISP's 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, 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 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 username/password.

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

share|improve this answer

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.

share|improve this answer

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
share|improve this answer
1  
can you explain why this works / what it does? –  Eiyrioü von Kauyf Jul 21 '13 at 4:43
    
support.microsoft.com/kb/947239 here is the description of this –  bksi Aug 30 '13 at 2:57

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.

share|improve this answer

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.

share|improve this answer
    
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 '11 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 '11 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 '11 at 3:04

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.

share|improve this answer

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

share|improve this answer
6  
Can you expand on the answer? Maybe give instructions for future visitors? –  Canadian Luke Jan 10 '13 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 '13 at 23:24

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.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.