Hucksh 2024-03-01 release

A lot has changed with this release.

The first release, I had all the information on Notion, and distributed via a Dropbox page.

This release, all the information is here on huckridge.com, and distributed via Github. (Nothing against Notion or Dropbox; I still use Notion internally a lot.) This was my first time building releases in Github, so that was an interesting learning curve.

(In case it’s not obvious, that Github link up in the previous paragraph goes to the release: https://github.com/HuckRidgeSW/hucksh_public/releases/tag/release-2024-03-01.)

The big news for the release itself that the GUI works on Windows now

(The server doesn’t yet. Working on that.)

Here’s a screenshot:

The hucksh GUI running on Windows
Hucksh GUI on Windows

The next bit requires a bit of explanation.

The hucksh GUI talks to the hucksh server via a Unix socket. On macOS and Linux, you can configure ssh to listen on a Unix socket, and forward the data over the encrypted connection to a Unix socket on the remote host (where you’re running hucksh serve).

It turns out that the version of ssh from Microsoft won’t do that. It can forward network ports, but not Unix sockets.

BUT … Cygwin’s ssh can forward Unix sockets.

BUT … Cygwin’s ssh doesn’t use Windows-native Unix sockets, it uses emulated Unix sockets, that are actually network ports listening on 127.0.0.1 under the hood. So the hucksh GUI couldn’t talk to them, since they’re not real Unix sockets.

BUT … I adapted some code that lets me do that, so the hucksh GUI can talk to an emulated Unix socket created by Cygwin ssh. So that’s nice.

BUT … you shouldn’t have to install Cygwin to use Hucksh. So I wrote some code that would listen on a Windows-native Unix socket and forward it over an internal ssh client (courtesy golang.org/x/crypto/ssh) just like ssh should be able to do.

Enter hucksh forward

And that’s what hucksh forward does. It looks like this:

hucksh forward in action

See hucksh forward --help for a lot more information about that subcommand. In particular, it’s still pretty stupid and requires that you’ve already configured .ssh/known_hosts and so on so you can login to the remote host without entering a password or passphrase. So, like, if you can’t run ssh remote_host date and get a date back without any other typing, you’ll need to configure that.

hucksh forward works on other platforms, but you can just use ssh on those platforms, so you probably wouldn’t need it.

As mentioned above, the hucksh server (hucksh serve) doesn’t yet work on Windows. So the GUI needs to be pointed to a server running on macOS or Linux. (Which is a big reason I really needed the forward subcommand.)

See the changelog for the rest

Check the changelog for other smaller features, changes, and bug-fixes.