Has SecureCRT 8.1.0 got you down?

tl;dr - If you upgraded to SecureCRT 8.1.0 and your sessions are slow, globally change your font in all your sessions.

SecureCRT is hands-down my favorite secure terminal application on OS X, Windows & iOS.  I've been using it since early 1998, and I have never found a better tool.  That said...

This past weekend I got around to renewing my license so I could upgrade to SecureCRT 8.1.0.  I even ponied up for a three year license / upgrade plan.

Withing a few minutes of upgrading, I knew something was wrong.  Slow screen scrolling, slow pasting into sessions, absolutely intolerably slow trying to scroll back through my terminal buffer.

It was downright painful.  So painful that I pulled version 8.0.2 out of my trash and ran it side by side.  Tests using slo-mo video mode on my iPhone revealed that the new version was scrolling text at 1/5 of the speed of the old version.  That's a big steaming pile of no joy.

While I had no crash dumps, or forensic evidence of the issue, I shot off an email to support to let them know about the issue.  I got a prompt reply, as I always do from VanDyke Software.  Support was wonderfully patient with me.  (If you have heard that doctors make the worst patients, then ya gotta figure that DevOps Security types make the worst customers of tech.)  They hadn't encountered the issue, and weren't able to reproduce; but the back and forth willingness to keep working at the issue is one of the things that makes VanDyke Software an awesome company.

While trying to document a couple of different permutations of the issue, I stumbled onto the cause.  In doing so, I also realize why the ubergeeks at VanDyke Software were not able to reproduce the issue.  I've been running SecureCRT on OS X since version 6.6, and some of my existing session configs were originally created in that version, back in 2010.  Who knows how many bits of my configs are functional, but not optimal.  One of those non-optimal settings was apparently my font.  When I globally changed my font, all my sessions sped up.  But wait, there's more...  When I then globally changed my font back to the original setting, my sessions were still gloriously fast.  How's that?  I diffed one of my old session configs against a newly 'fixed' config. Despite them both having the same font selected in the GUI they had slightly different font settings in the config.  Something had changed in my font catalog, and while using the original data technically worked there was a noticeable increase in overhead to make it work.  Functional, but not optimal.

If this helped you out, please let me know.

How to keep Mavericks’ App Nap from biting you.

Mavericks has a lot of nifty features, and because Apple thinks everything they do is nifty these features are turned on by default. A co-worker of mine recently upgraded to Mavericks on his work machine (I won't do that until 10.9.1 is released next week), and he discovered that every time he walked away from his computer he lost most of his SSH sessions. He did some testing, and found that only SSH connections in SecureCRT were dropping, while test connections in Terminal were not.

Long story short, since I don't want to blow up Gene's ego in regards to his work diagnosing this, the problem turned out to be App Nap. App Nap is a new feature that puts applications into a suspended state while the screen saver is active, thereby reducing power consumption.

Why wasn't Terminal affected? Apple engineers are well aware that sleeping a terminal app will cause dropped connections, so they completely removed the App Nap option from Terminal. You can't turn it on if you wanted to. All other apps default to enabled.

So, if you are having issues with dropped connections, or other application wonkiness when your screen saver kicks in, head on over to here for the fix:

http://www.tekrevue.com/tip/disable-app-nap-os-x-mavericks/

SecureCRT and a failed order of applied preferences

Update: The amazing folks at VanDyke have fixed SecureCRT so that if the session has a defined key, it is tried first; and if that key fails then agent keys are tried next.


The server has disconnected with an error. Server message reads:
A protocol error occurred. Too many authentication failures for ec2-user

Recently I was setting up EC2 instances for a client, and as such things go I wound up creating ssh keys for each of the EC2 regions in which I was working.  With each instance I created in each new region, I configured the specific connection profile in SecureCRT with the appropriate ssh key.  All was well, for a while.  And then I hit a brick wall.  I could spin up new instances, add them to SecureCRT, but I couldn't connect to them.

Long story short, as I added each new ssh key, it was added to the "Agent Keys" that were automagically presented to each host.  What I didn't expect, and what I consider to be a bit of a bug, is that the Agent Keys are presented first; even if the session profile specifies a key.  So, despite having configured a specific key for the session, my connections were failing because the X number of Agent Keys presented first exceeded MaxAuthTries in the sshd_config.

Many other ssh clients support Key Agent along with specified keys.  OpenSSH and PuTTY are two that come to mind.  OpenSSH will present Key Agent keys for auth, but if you specify "-i PATHtoKEYfile" that key will be presented first.

I reached out to support at VanDyke, the creators of SecureCRT.  I explained the problem, and asked if there was a configuration option for controlling the Key Agent/Session Key order; and if not I requested that this be filed as a bug.  I was told this "behavior is by design".  Odd, since they constructed a video explaining how Session settings override Default settings; so it is obvious they understand that most specific takes precedent over less specific settings.  The same precedence should logically apply to auth keys, and it does with OpenSSH.  According to section 7.4.2.1 "Using Identities" in SSH, The Secure Shell: The Definitive Guide the described behavior is host specific identities, and then agent identities.

The quickie solution I used was to got to "Tools"/"Manage Agent Keys" in SecureCRT and clear out all the extraneous keys that had accumulated.  I hated doing this, as I was stripping out some of the 'automatic smarts' that I love about SecureCRT.  Still, it isn't as bad as the kludge that Todd at VanDyke support suggested.  His suggestion was that I disable "Try All Agent Keys" in the SSH2.ini file.  Todd's suggestion makes me wonder why I pay money for SecureCRT and all of its advanced features if their only way to deal with a problem is to have me disable those features.

Despite several days of emailing back and forth, and providing documentation showing that at least two of the major ssh clients process host keys before agent keys, the folks at VanDyke stand by their odd choice of ordering.  Todd has submitted a 'feature request' for me, and they refuse to treat this as a bug.  Next time my license is up for renewal I just might have to write a SecureCRT->JellyfiSSH config conversion tool...