Posted on Fri 22 April 2016



EDIT: This article was first posted in 2016. As of 2019 I still have to use Windows at work, but now I just use WSL with wsltty.

At work I have to use Windows as operating system on my workstation, even though I manage almost only linux servers. There are dozens of ways to connect from Windows via SSH to a linux server and I will tell you my way.

I started (of course) with PuTTY, the unarguably most famous ssh client for windows. Soon I noticed some limitations, such as a missing tabbed interface (nothing’s worse than having 20 putty windows in the taskbar), no (useful) session management, cumbersome configuration via the GUI or no portability by default (putty stores sessions in the registry). All these problems and then some more made me look for alternatives.







The for me most important “problem” to solve was the missing tabs that I started to love with Firefox. There are several programs that provide a wrapper for Putty to use it with tabs: SuperPuTTY, PuTTY Manager or MTPuTTY.







My first choice then was MTPuTTY, a tool that satisfied my needs for some years. Until I got a laptop as my primary workstation. With it MTPuTTY has a (reproducible) bug that when you moved the cursor down over a putty window, the windows moved down with your cursor, even if it was in full-screen. Also because is not open source and the author of the software did not respond to my contact attempts, I had to look for an alternative.

I already used cygwin some years ago before using PuTTY. Cygwin is a “collection of GNU and open source tools […] on Windows”. The installation and configuration of cygwin was not very user-friendly and required much fiddling, so I never got comfortable with it. Even my last attempt on using cygwin productively after MTPuTTY was not satisfying.







Next I tried MobaXterm, a program that advertised itself with features like an included Xserver, tabs, SFTP and portability. I really liked MobaXterm in the beginning. But the range of functions got the better of it and it felt sluggish and bloated compared to MTPuTTY and the others. The fact that it was not open source and the free version could only handle up to ten saved sessions made matters worse for my use case.







During my continued search for a suitable admin-tool I randomly stumbled over babun, a self-proclaimed “windows shell you will love”. Babun is based on cygwin, though it offers convenient features that make it superior to cygwin: the really easy installation (just run one script!), its own package-manager pact, automatic updates and proxy- and git-support out of the box!







Since you’re practically working on a linux-shell, there was no need for a complicated and cumbersome session handling trough a GUI. Now I could just use the built-in ssh and its configuration through a simple text file.

What was missing was of course tabs! Luckily there are programs for Windows that can display whole programs as tabs in a unified interface. Cmder belongs to this sort of application. But it can do more than just display programs as tabs: it’s a fully fledged console emulator for Windows (though I mainly use the tab-functionality).

In the end the interaction between cmder and babun gave me the following advantages that made me stick to this combination:

native SSH

a local Windows Bash-shell

tabs!

automatic updates

Git-integration

easy session-handling

So that you can learn something from this article, here’s a short tutorial on how to set up and configure cmder and babun:

extract Babun and install it

extract Cmder (use full version) and install it

use Sourcecode Pro as a font (optional)

modify configuration files .babunrc .bashrc .minttyrc

configure Cmder create new startup-task for babun Task parameters: /icon "%userprofile%\.babun\cygwin\bin\mintty.exe" /dir "%userprofile%" Commands: %userprofile%\.babun\cygwin\bin\mintty.exe - under startup > activate babun-task as autostart task, under “Specified named task”

choose color scheme (optional) take one from here and configure it in .minttyrc

modify SSH -configuration (in ~/.ssh/) generate SSH -key and put it here create .ssh/.config and modify it

-configuration (in ~/.ssh/)

Article pictures