Keys
The keys page (sidebar) manages your SSH keys. Private key bytes live only in the iOS Keychain — Tessera stores just public metadata (names, fingerprints, usage) in its own database.
Generating a key
Tap + generate and pick an algorithm:
- Ed25519 — "fast, modern default". A software key stored in the Keychain; it can be exported to a recovery file and moved between devices.
- P-256 Enclave — "device-bound". Generated inside the Secure Enclave and never leaves it: the key cannot be exported or moved to another device. Lose the iPad and the key is gone — keep a second authorized key somewhere.
RSA generation is not supported; see troubleshooting.
Importing a key
Tap import and pick an OpenSSH private-key file (up to 1 MB). If the file is passphrase-protected, the passphrase is used once to decrypt it and is not retained.
- Only Ed25519 imports are accepted. RSA import is disabled because the current SSH stack can only offer the deprecated RSA/SHA-1 signature — use Ed25519 instead.
- The import sheet hides itself ("private-key import hidden") whenever the screen is captured or the app is backgrounded.
Biometric protection
Each key has a require biometrics or passcode toggle: Face ID / Touch ID or the device passcode is then required whenever Tessera accesses that key, enforced by iOS at the Keychain/Secure Enclave boundary.
Authorization bursts
Under settings → security → authorize key connection bursts, a single biometric grant may cover repeated connections using the same key to the same endpoint for 30 seconds — so tmux tabs and file transfers don't each prompt. Backgrounding the app always invalidates these grants, even when app lock is off.
P-256 Enclave keys have their protection fixed at creation; to change it, generate a new key and rotate.
The key detail panel
Tap a key to see its type, fingerprint (sha256) (OpenSSH-compatible), and public key. From here you can:
- copy public key — the
authorized_keysline. - copy to host… — install it on a server (below).
- export private key… — Ed25519 only; writes a passphrase-encrypted
openssh-key-v1recovery file. - delete local private key… — see deletion.
A used by section lists the hosts that reference the key.
Installing a key on a host
copy to host… picks a host, shows the exact authorized_keys line, and
appends it to ~/.ssh/authorized_keys over SSH, with verification markers.
- You must have trusted the host key first: connect once to review it, then retry.
- Tessera refuses to install a key onto a host that already uses that key for authentication.
- Completed installations are tracked, and the deletion flow reports them ("Known remote installations: N").
Export and recovery
The recovery section of a key tracks its backup state — whether a verified recovery export exists (with date and fingerprint), and for Enclave keys a standing reminder that Secure Enclave private material cannot leave the device.
- protect recovery key… — export with a passphrase.
- verify recovery file… — check that a recovery file still matches the key.
- restore from recovery file… — fingerprint-verified repair of missing or mismatched Keychain material (e.g. after a restore from backup).
Back up software keys before installing them widely — an unrecoverable key means locking yourself out as passwords get disabled.
Deleting a key
delete local private key… removes the key from the Keychain after
confirmation. Deleting locally does not revoke any authorized_keys entry
on your servers — where a tracked host has an alternate credential available,
the deletion flow offers "revoke on N tracked hosts & delete" to remove them
for you; otherwise remove the corresponding lines on each server yourself if
the key should stop working.
Legacy RSA keys left over from older versions are shown disabled.
Where the bytes are
- Software Ed25519 keys: iOS Keychain (non-synchronizing).
- P-256 keys: Secure Enclave, non-exportable by design.
- Tessera's own database: public keys, fingerprints, labels, usage — never private material.
For the full hardening story, see the public private-key security audit.