Simple Secure Shell app icon

Simple Secure Shell

A modern SSH app for iPhone and iPad

View on the App Store

Requires iOS 17 or iPadOS 17 or later.

Price
One-time purchase, shown on the App Store. No subscription, no in-app purchases.
Home screen
Shown as Simple SSH
Version
1.0
Released
2026-11-03
Size
34 MB
Language
English
Age rating
4+

Simple SSH is a terminal app for iOS. Full-screen programs such as vim, htop, mc and tmux work as they do in a desktop terminal.

Sessions and iOS

iOS suspends an app shortly after it leaves the screen, and a suspended app cannot keep a network connection open. No iOS terminal app can change that, so Simple SSH keeps the session on the server instead.

Each host is set to one of three modes:

  • tmux (or GNU screen). The app runs tmux new-session -A -D -s termw, which attaches to the session if it exists and creates it if it doesn't. When iOS suspends the app, the session keeps running on the server. When you come back, the app reconnects and re-attaches, and the screen is as you left it. It also reconnects after a network change or a dropped connection, with backoff, and retries right away when the network comes back.
  • Direct shell. A plain login shell. The connection is held open for about 30 seconds after you switch away, which covers a quick trip to another app. After that the shell ends, along with anything running in it.

If you already use tmux:

  • The session is named termw by default, and the name can be changed per host. A second tab on the same host gets termw-2 (etc), so tabs never share a session. Closing tab 2 and opening a new one re-attaches to termw-2.
  • -D detaches every other client from that session when the app attaches. This is how a stale client left behind by a suspended app is cleared. If you attach to the same session from a desktop, the two will take it from each other.
  • tmux must be installed on the server. The app adds the usual Homebrew, MacPorts and ~/.local directories to PATH to find it. If it's not found, you get a plain shell and a warning that the session will not survive.
  • The launch command runs under /bin/sh, so a login shell of fish, csh or nushell is fine.
  • Open tabs are restored when the app is relaunched. A tmux or screen tab re-attaches to its session on its own if it can sign in without asking; otherwise it waits for you to open it.

Compatibility

Simple SSH is built on Apple's swift-nio-ssh, which is widely compatible but doesn't support all SSH features.

Sign-in

PasswordTyped each time, or saved in the device keychain.
Ed25519 keysGenerated in the app, pasted, or imported from a file.
ECDSA keysP-256, P-384 and P-521, pasted or imported.
Secure Enclave keysECDSA P-256, generated on the device. The private key cannot be exported, copied or backed up.
Passphrase-protected keysOpenSSH-format files, which is what ssh-keygen writes by default. The passphrase is used once to unlock the key and is not saved.
No sign-inFor public servers that let anyone in, such as games and demos.
RSA and DSA keysNot supported. Use an Ed25519 key instead; the app can generate one.
Older PEM-format encrypted keysNot supported. ssh-keygen -p -f on a copy rewrites the key in the current format, keeping the passphrase.
Keyboard-interactive and two-factor promptsNot supported. A server that offers only these can't be reached; it needs password or public-key sign-in enabled.

After you sign in with a password, the app can install a public key on the server for you. It appends the key to ~/.ssh/authorized_keys if it isn't already there.

Protocol

Key exchangecurve25519-sha256, ecdh-sha2-nistp256, -nistp384, -nistp521
Ciphersaes256-gcm@openssh.com, aes128-gcm@openssh.com, then aes256-ctr and aes128-ctr with hmac-sha2-256 for servers without GCM, such as Dropbear on routers
Server host keysEd25519 and ECDSA
RSA-only host keyCan't connect. The connection fails during key exchange. Any current OpenSSH server also has an Ed25519 host key.
Older ciphers only (CBC, 3DES)Can't connect.

Not included

  • SFTP or any file transfer
  • Port forwarding
  • ssh-agent and agent forwarding
  • Jump hosts
  • Importing ~/.ssh/config
  • Mosh, telnet and serial connections

The terminal

  • Terminal emulation by SwiftTerm. TERM is xterm-256color, which every server has a terminfo entry for.
  • Tabs, each its own connection. On iPad, dragging a tab to the edge of the screen gives it a window of its own. Split View and Stage Manager are supported.
  • Mouse reporting: a tap is a click and a drag sends motion, so programs like mc respond to touch. With a trackpad or mouse on iPad, hovering sends pointer motion too. The terminal menu turns mouse reporting off when you'd rather select text.
  • Inline images: kitty graphics, iTerm2 inline images and sixel. Inside tmux, images need tmux set -g allow-passthrough on on the server; the app does not change your tmux settings for you. The window size is reported in pixels as well as cells, so images come out at the size the program intended.
  • On iPad, esc, ctrl and arrow keys sit in the keyboard's shortcut bar. On iPhone they're in a row above the keyboard, with tab and function keys.
  • With a hardware keyboard, keyboard shortcuts for tabs and font size. Hold ⌘ to see them.
  • ssh:// links open the app. A link to a saved host asks before connecting; any other link opens a new host, filled in, for you to review. Passwords in links are ignored.
  • Light and dark appearance, and five app icons to choose from.

Privacy and security

  • The app has no account of its own, no analytics, no ads and no tracking. The only network traffic is the SSH connections you make. The App Store privacy label is “Data Not Collected”.
  • Passwords and private keys are stored in the device keychain, marked this-device-only. They don't sync to iCloud and aren't included in backups. On a new device you add your keys again (for a Secure Enclave key, you generate a new one).
  • Host keys are trusted on first use, with fingerprints in the same SHA256: form ssh-keygen -l prints. If a known host's key changes, the connection stops and both fingerprints are shown. Nothing reconnects in the meantime.
  • An optional app lock uses Face ID, Touch ID or the device passcode.
  • The connection check after you return to the app opens and closes an SSH channel. It never types anything into your shell.

See the privacy policy.

Screenshots

iPad running htop inside a tmux session on a host named Home lab.
htop in a tmux session on iPad.
iPad with three tabs open, showing a shell with git and docker output.
Three tabs, each its own connection.
iPhone showing a line chart drawn inline in the terminal by imgcat.
An inline image from imgcat.
Host list with five hosts, each labelled tmux, GNU screen or Direct shell.
Hosts, each with its session mode.
SSH keys screen with two Ed25519 keys and options to generate, paste or import a key.
Keys: generate, paste or import.
iPhone Duo, open, running htop inside a tmux session on a host named Home lab.
htop in tmux on the iPhone Duo, open.
iPhone Duo, open, with three tabs, showing git and docker output on a host named Web VPS.
Three tabs across the iPhone Duo's inner screen.

The screenshots use demo content.

Support

Email support@falldaysoftware.com, or @stevex@mastodon.social on Mastodon.

Simple SSH uses SwiftTerm (MIT) and Apple's SwiftNIO, SwiftNIO SSH and Swift Crypto (Apache-2.0). Their licences are in the app under Settings › Acknowledgements.