administering a lot of Linux systems from Windows? consider using WSL and a terminal multiplexer.

When I was first getting my feet wet operating and developing on Linux systems, I used the popular terminal client PuTTY to connect to Linux systems. For a lot of folks with a Windows PC as their daily driver, PuTTY is the go-to tool for opening SSH sessions to Linux servers. PuTTY was comfortable for me for a while, until I found myself in situations where I needed to work with multiple servers via SSH at the same time. Juggling multiple PuTTY instances is kind of a nightmare.

I experimented with a few different solutions to the workflow challenge of simultaneously managing multiple SSH connections. Of these workflows, the one I personally found to be the most productive can be described as: establish and manage remote SSH connections from within a terminal multiplexer, running on a Linux client.

For me, this technique first looked something like this: I would use PuTTY to open a SSH connection from my Windows laptop to a “jump box” client. The jump box was a minimally spec’d virtual machine running CentOS Enterprise Linux. On my jump box, I’d installed and configured tmux, a terminal multiplexer, plus all of the other Linux-only tools I used as part of my dev/admin workflow. After I took the time to learn to operate and configure tmux, I found this to be hands down the most productive way to manage multiple interactive SSH terminals.

This piece of my Linux dev workflow remained the same for a while, until not long after Microsoft’s release of the Windows Subsystem for Linux (WSL). WSL enables Windows users to run Linux applications locally, “on” Windows. This idea was especially attractive to me, since it seemed like WSL could potentially eliminate the need for my Linux jump box in my workflow. And when I found time to install and configure WSL on my laptop, I found that this was in fact actually possible—with WSL running, I could now use tmux right on my Windows machine.

Everything worked more or less the way I expected it to work right out of the gate, with a couple minor exceptions. At some point I’ll demo some of the fine-tuning I’ve had to do for the Windows + WSL + tmux stack in a follow-up/Part 2 post. I’ll also link the git repo that contains the bulk of my bash profile, my WSL config, and some scripts I wrote to help with some of the one-time setup of this stack on my Windows devices.

Stay tuned.