Allison asked me to hijack this format for a special instalment where I share three related apps I’m still using that share a theme — connecting to remote computers.
My day job has changed in many ways in recent months as I’ve transitioned from being a vanilla sysadmin to a cybersecurity specialist, but one thing that hasn’t changed is a need to connect to our fleet of hundreds of servers of all kinds. As for outside of work, I’m still the same nerd I ever was, so still connect to just as many servers and services to support my nerd hobbies including podcasting, blogging, and coding. Basically, connecting to remote computers isn’t something I do just a few times a week or even a day, but a few times and hour! If a remote connection app makes me a little cranky, that crankiness gets seriously amplified by repetition!
Because of that amplification, I spent years jumping from app to app to app but when Allison started this series I had a realisation — it’s been years since I replaced my Windows Remote Desktop client, my SSH client, or my file transfer client!
I’m goint to go through these apps in reverse chronological order so I can start with the one I’m least in love with and end with the one I’ve been using the longest.
For your convenience, here are the links and the prices:
- Microsoft Remote Desktop — free 🙂
- Core Shell — free with optional in-app upgrade for premium features (€11.99/y or €35.99 for 4 years)
- Transmit 5 — $45
Microsoft Remote Desktop
I use this app daily, but only if you redefine daily to mean on a work day 🙂. In my personal life I don’t use Windows, period, so I have no need to connect to remote Windows desktop interfaces. In work, I’m also lucky enough to use a Mac as my primary machine, but I do often need to run Windows apps, to test things on windows for documentation and troubleshooting, and of course, I help manage a large Windows domain and a substantial fleet of Windows servers, so I connect to a lot of Windows virtual machines each day. In fact, I do have a Windows desktop PC in work; it just happens to be 100% virtual and live in the cloud, so my only access to it is via the Remote Desktop Protocol (RDP).
For many years, one of my biggest gripes with life on the Mac was the utter lack of good RDP clients. The official Microsoft client was a crash-happy mess, and the open source contender (CoRD) was robust but feature poor. You could either have unreliable access to a decent feature set, or reliable access to just the basic features.
That all changed a few years ago when Microsoft replaced their official Mac client with an entirely new one that actually works! It’s so nice to be able to tell Mac users that if they need to connect to Windows PCs or servers from their Macs, they can grab the official Microsoft Remote Desktop app from the Mac App Store and get a good experience!
I did warn that I’d start with the app I love least, so let’s get my gripes out of the way first. The settings screens are crude, and the default to create each new preset to launch in as a new fullscreen desktop is really annoying. Each time I create a new entry I have to un-tick that same text box!
With that out of the way, why do I like the app? Well, first things first, the basic functionality works, and it works reliably! I can connect to a Windows computer and have the desktop appear on my Mac as a window. When I re-size the window, Windows responds by adjusting the remote resolution to match my window size, so you never get that dumb scroll view you get when connecting to a remote Mac with Apple’s Remote Desktop client. It also has support for Retina displays, so assuming the remote version of Windows is even remotely modern, you get retina resolution on your Windows desktop!
With my security hat firmly on, I like that it allows you to define user accounts once, and then tell a shortcut to use a saved account to authenticate, and, that it stores the passwords for those saved accounts in the macOS KeyChain.
From a usability point of view, there are some power features that make my day-to-day life so much easier. In no particular order, the app:
- Seamlessly synchronises the clipboard between my Mac and Windows, so I never have to think about where two windows are to copy and paste between them.
- On a very related note, the client seamlessly remaps the Mac keyboard shortcuts to Windows keystrokes, so I can type cmd+c, and Windows hears ctrl+c, combined with the clipboard syncing that completes the magic!
- Speaking of magic, the client lets me drag and drop between Finder windows on my Mac and File Explorer windows on Windows!
- You can map any folder on your Mac into the remote Windows machine where it appears as a network drive. You can even choose to make the folder read-only on the Windows end, which I do a lot.
There are some other power features I don’t use that may be of interest to some:
- You can map your camera and mic through to Windows
- You can route the sound from the Windows computer to your Mac
- You can map your Mac printer through to Windows
- You can map USB devices on your Mac through to Windows
If you need to use a Windows machine from a Mac, go to the App Store and grab this free client, it really does just work!
Core Shell (formerly Core SSH)
Of the three apps, this is the one I use most because I use it heavily both at home and at work. I’m a real keyboard junky, so my preferred mechanism for working with servers is the command line, so my biggest need is remote terminals. In our modern security-conscious world, that means I need a rock-solid SSH client!
I literally connect to hundreds of servers, so I need a good UI for managing my connections, and I need a secure way of handling SSH keys, the passwords for SSH keys, and traditional SSH passwords.
Way back when, when I was still a Windows user, I used PuTTY, and I really liked it, but when I came to the Mac I became very disillusioned with the choice of SSH clients on offer. The thing I love most about the Mac is that it’s a human-friendly UI on top of a Unix OS, so I expect my Mac apps to have great UIs, and I expect them to be consistent, which means doing things the Mac way. For years, every SSH client on the Mac was either a crude port of a Linux or Windows tool (there was even a version of Putty that ran in X11 on the Mac), or the worst kind of for-geeks-by-geeks clunky and crude wrapper around the SSH config file. Basically, all the clients made me cranky, so I spent years trying client after client and never hanging around for long.
Finally, I came across a true blue native Mac app that was still pretty new, and then called Core SSH. That app has since matured to become Core Shell, and other than the Finder, Mail.app and Safari, it’s probably the app that spends the most time running on any of my Macs.
Again, starting with my security hat on, any passwords saved in Core Shell get stored in the macOS KeyChain, but as well as that, if you install the helper app Core Shell, you can make use of the SSH Agent that’s included with macOS, and it can use your
~/.ssh folder to store its known hosts etc..
When it comes to server entries they’re easy to create, there’s nice tagging support, and if you enable the premium features via an in-app purchase, server entry sync between Macs.
Where the app really shines for me is its keyboard-only use, and that’s probably because the developer was good enough to take some of my suggestions onboard and implement them 🙂
When you open the app for the first time, or simply open a new window or tab, you get presented with your server list and a search box. If you just start typing, focus automatically shifts to the search box and the list starts to filter down. When you see the server you want, you simply arrow down to move from the search box into the list, get to the server you want, then hit enter to connect. No need to tab in or out of that search box. You just type, and you get to your server really quickly! Of course you have all the usual Mac key combos like cmd+n for a new window and cmd+t for a new tab, but you also have cmd+d to Duplicate the current tab, i.e. connect to the same server in a new tab. I use the duplicate feature a lot as I often want to tail multiple logs on the same server at the same time while troubleshooting.
Finally, this is the only SSH GUI on any platform I’ve yet seen with a good interface for setting literally every possible option OpenSSH config files support. Some of our servers in work need custom settings, and every other app makes that a pain, but not Core Shell!
Remote terminals are great, but they don’t let you easily move data to and from a remote server. For that, you need a file transfer client. In the dark old days you needed an FTP client, today you’re more likely to need an SFTP client, or a client that can connect to one of the many modern cloud services. Personally, I need SFTP and Amazon S3 blob storage compatibility. Linux servers all use SFTP, which is basically FTP over SSH, and the B2 bucket I back my servers up to as well as the Digital Ocean CDN that hosts the Let’s Talk Podcast media both use the Amazon S3 API.
Panic’s venerable Transmit supports all the protocols I ever need, and many many more! The screenshot below show the full list from Transmit New Connection dialogue, but some highlights are Google Drive, One Drive & Dropbox.
Transmit is now on version 5, and I started using the app way back at version 3, which came out in 2005. I’m not sure if I bought the app the moment Transmit 3 came out, but I definitely used Transmit 3 for many years before version 4 was released in 2010, so I’ve been using it for at least a dozen years, probably quite a few more!
With each refresh, Transmit adopts the most current Mac conventions and APIs, so it always feels like a modern and full-featured Mac app.
Like Core Shell and Microsoft Remote Desktop, it stores its passwords in the macOS KeyChain, and like Core Shell, it uses the details in your
~/.ssh folder when connecting over SFTP. It also supports syncing of connection settings between Macs, and indeed between other relevant apps by Panic.
Transmit supports the traditional 2-pane layout FTP apps have used for decades, but the local pane is optional, and I prefer not to enable it, instead, I use Transmit windows as if they were Finder windows and just drag and drop as desired. Transmit is even smart enough to let you edit remote files locally, and handle the upload of your changes automagically.
If you need to work with remote computers, and if you share my love of native Mac UIs and ubiquitous drag-and-drop support, why not give these three apps a go!