Resolving the ssh-dss Error With GoDaddy Linux Economy Shared Hosting
As I mentioned in my last post, CosmoCatalano.com has been around for a while—over a decade, in fact. And this entire interval—an eternity in Internet time—it’s been hosted on the same crummy GoDaddy Linux Economy shared hosting account.
It’s definitely legacy software, and the latest version of OS X has finally decided (and not without reason) that my host’s OpenSSH version was simply too old and janky to support. If you come across a connection error with the following message:
Unable to negotiate with hostname: no matching key exchange method found. Their offer: ssh-dss
it’s a pretty safe bet that that’s your issue, too.
If you’re a command-line kinda guy, you can still make it work by adding -oHostKeyAlgorithms=+ssh-dss
to your regular ssh command in Terminal, e.g.:
$ ssh -oHostKeyAlgorithms=+ssh-dss user@hostname
But that gets tedious fast, and won’t work for third-party apps like Cyberduck.
To make it possible to connect to anything that uses ssh, you can (on OS X and most Linux flavors, anyway) edit your SSH configuration. I think the easiest way to do it is via command line and vi. Open Terminal and enter the following:
$ vi ~/.ssh/config
This file is probably empty, so hit “I” (this puts vi into INSERT mode…don’t get me started) and paste the following
Host hostname
PubkeyAcceptedKeyTypes=+ssh-dss
Once that’s entered, hit escape and then shift+ZZ (or any of the other similarly byzantine quit-and-save vi commands). You should now be able to connect to your shamefully legacy hosting account as easily as you did back in 2014 or so.
But as much as I’ve enjoyed fighting this and other legacy GoDaddy battles, I think it’s finally time to turn the page. “Smart http” git, https, and a host of other nifty new things simply don’t work on the platform. I’m sure I’ll still be able to make use of its unlimited bandwidth and storage for static content, but for the new toys I’d like to build, an improved host account is in order. Stay tuned.