SSH

Secure Shell, of course. Besides the obvious OpenSSH link, this page will hold some of the less obvious (and more useful) stuff:

Resources

Category Date Link Notes
Clients
SSH Tools

includes a secure VNC client in Java, sources

JavaSSH

another (smaller) applet

PuTTY Symbian port
MindTerm

oldie but goodie Java applet

PuTTY
ssheven

a modern SSH client for Mac OS 7/8/9.

Essentials fail2ban

block script kiddies and other pests from trying to do dictionary-based attacks on your server (on the internet, nobody knows that you only use key-based authentication – not even morons).

HOWTOs Restricted Shell for scp/sftp
Using ssh-agent
scponly
An Illustrated Guide to SSH Agent Forwarding

everything but SOCKS, but pretty useful to hand out to newbies.

Libraries sshfs

a FUSE / VFS -based filesystem layer atop SSH (FUSE has a BSD port, and there are now plenty of equivalents for Mac OS X)

org.keyphrene

Python wrapper

Servers 2024 tinyssh

a minimalistic SSH server which implements only a subset of SSHv2 features.

Tools Gnome SSH Tunnel Manager
sshrc

take your environment with you

secretive

a tool to store keys in the macOS Secure Enclave

2023 ssh-crypt

a tool to encrypt/decrypt data using your ssh key from ssh-agent

2024 dracut-sshd

an initramfs plugin to remotely decrypt root filesystems upon boot

Useful tricks

macOS keychain

SSH key handling has been changing throughout the years, but in Sierra (10.12.2) things can be restored to a modicum of sanity with these settings:

Host *
  UseKeychain yes
  AddKeysToAgent yes

Automatic session forwarding

If you routinely need to access a host behind another (or a VM inside a host), this is a relatively painless way to do so (won’t allow you to do SFTP, though, since that’s a different subsystem):

cat ~/.ssh/authorized\_keys | grep command
command="ssh user@host" ...rest of key

Keep-alives

Using the built-in keep-alive feature to maintain tunnels with a TCP keep-alive and a 30s internal (in-band) client active check (will try 10 times before disconnecting):

KeepAlive yes
ClientAliveInterval 30
ClientAliveCountMax 10

Speeding up connections to the same host (thanks to Melo):

$ head -3 ~/.ssh/config
Host *
 ControlMaster auto
 ControlPath /tmp/501/mux-%h-%p-%r

(on my machine the socket file is in 502 – more similar tips here)

This page is referenced in: