SSH Manager Pro Get the app

SSH keys that cannot be copied off the phone

The app can generate a key inside the phone's security chip. The private half is created there and never exists as bytes any process can read — including this app.

Why this matters

An imported private key is a file. However carefully an app encrypts it, it was plaintext at some point, it can be recovered from a rooted device, and it may sit in a backup you have forgotten about. A key that was never exportable has none of those exposures, because there is nothing to extract: signing happens inside the security hardware and only the signature comes out.

Where the key actually lives

Android offers two levels of protection and the app tells you which one you got, rather than claiming the stronger one:

StrongBox
A separate tamper-resistant chip — Titan M on Pixel devices, and equivalents from other manufacturers. Requested first.
Trusted Execution Environment
Hardware-isolated from Android and still non-exportable, but a softer boundary than a dedicated chip. Used when StrongBox is unavailable.
Software only
Some older devices and all emulators. The key still cannot be exported, but it carries no hardware guarantee — and the app says so in red rather than letting you assume otherwise.

What you give up

This is a real trade and the app states it before you generate anything. A hardware-backed key:

Deleting a key asks first, names the hosts that use it, and warns when a hardware-backed key cannot be recovered. Settings lists which hosts use each key.

The recovery story is generating a new key and updating authorized_keys. There is no other option, so the app does not pretend there is. If you want a key that travels, put it on a YubiKey instead.

Optional biometric confirmation

A key can be created so that every signature requires your fingerprint or device credential. This prompts on each connection rather than caching an unlock for a window — a validity period would let one authentication cover later connections you never saw, which is not what "require confirmation" should mean.

Imported keys

Existing keys are supported and are never written to disk in plaintext. They are encrypted with AES-256-GCM using a key held in the Android Keystore, and excluded from Android's cloud backups. Passphrase-protected keys work; the passphrase is stored in the same vault.

A decrypt failure is treated as an error, not a fallback. Some clients quietly use the ciphertext as though it were the secret when unsealing fails, which produces baffling authentication errors months later. Here the credential is reported as unreadable instead.

Getting the public key onto your server

The app shows the authorized_keys line when a key is created, and a Copy button on the key stays available afterwards (Settings > Security > SSH keys, or the host editor's Key tab). On first launch the app also creates a key for this phone in its secure hardware where it has one, named after the device, so you can use key login without making one first. With no private key to export later, publishing the public half is the whole setup step. See Getting started.