SSH Manager app icon

SSH Manager

Project documentation

SSH Manager is a small native macOS app I built for working with my own servers. It keeps saved logins (passwords in the Keychain), opens terminal sessions, manages SSH tunnels and SOCKS proxies, and has a two-pane file manager for Mac โ†” server and server โ†” server transfers.

Why I built it

I wanted one simple, slim app for the things I do every day: keeping my SSH credentials in one place, running tunnels into my homelab and moving a few files around. The third-party apps I tried were either bloated, required an account or a subscription, or felt counterintuitive to use. So I built my own, with only what I actually need.

It uses the OpenSSH that ships with macOS, and there is no account, subscription or cloud component. Written in Swift and SwiftUI.

Overview

The window is split into a sidebar and a content area. The sidebar contains, from top to bottom:

  • a search field that filters the server list,
  • File Transfer and Tunnels, the two tool views,
  • Sessions, listing open terminal sessions (only shown while one is open),
  • the saved servers, grouped by the group name set on each server.

Selecting a server opens its detail view with its connection details, its tunnels, and actions to Connect, Browse Files and Test the connection. Test logs in once and shows the remote user, host name and kernel.

Main window with grouped servers in the sidebar and the detail view of the Proxmox server after a successful connection test
Server detail view after a successful connection test.

Adding and editing servers

The + button in the sidebar opens the server editor. The same sheet is used for editing an existing server.

GeneralName and group. Servers with the same group are listed together in the sidebar.
ConnectionHost, port and username.
AuthenticationPassword, SSH key or SSH agent. Passwords are stored in the macOS Keychain.
NotesFree text for anything worth remembering about the server.
Server editor sheet with General, Connection, Authentication and Notes sections
Server editor with password authentication selected.

Terminal

Connect opens an SSH session in the built-in terminal. Each open session appears under Sessions in the sidebar, so several sessions can be open at once and switched between. The buttons at the top right reconnect or close the session.

In Settings the terminal can be changed: sessions open either in the built-in terminal, in Terminal.app or in iTerm2.

Built-in terminal running htop on the Proxmox host, with the session listed under Sessions in the sidebar
Built-in terminal running htop on a Proxmox host.

Tunnels

Tunnels are created per server, from the server's detail view or with + in the Tunnels view. Two kinds are supported:

  • Local port forwards, e.g. localhost:8006 โ†’ 192.168.188.39:8006, to reach a service behind the server on the Mac.
  • SOCKS proxies, to route traffic through the server.

The Tunnels view lists all tunnels. Each row shows the mapping and the server it runs through, a status dot, a button to open the forwarded address in the browser, and a switch to start or stop it.

Tunnels view with an active tunnel forwarding localhost:8006 to the Proxmox host
An active tunnel to the Proxmox web interface.
Proxmox VE login page loaded from localhost in Safari through the tunnel
The same tunnel in use: the Proxmox web interface opened on localhost.

File transfer

The File Transfer view has two panes. Each pane can show This Mac or any saved server, selected from the menu at the top of the pane. That allows transfers from Mac to server, server to Mac and directly between two servers.

  • Navigation with back, forward, up and home, or by typing a path.
  • Columns for name, size, modification date and permissions.
  • Copy and Move below each pane send the selection to the other side.
  • The Transfers list shows running transfers with progress and speed, and finished ones until they are cleared.
Two-pane file manager with This Mac on the left and the Proxmox server on the right, with two finished transfers below
Copying a folder and a file from the Mac to /tmp on the server.

Technical notes

PlatformmacOS, native app
Language / UISwift, SwiftUI
SSHSystem OpenSSH (ssh) for sessions, tunnels and transfers
SecretsPasswords stored in the macOS Keychain
ServicesNone: no account, no subscription, no cloud sync