Guides · September 2026

SSH from Android

The client landscape has shifted, the battery manager is out to get you, and the phone can still be a real terminal. Here is the route that works.

The Android SSH landscape, September 2026.

The app most guides still recommend is gone. JuiceSSH’s Play Store listing returns a not-found page, and its own site refused connections when we checked; an app you can no longer install is not a recommendation. What is left is better than it sounds. ConnectBot, the original Android SSH client, is open source under Apache-2.0 and still shipping releases. Termius is the polished cross-platform option, free for the basics. And Termux is a real Linux userland on the phone — OpenSSH, mosh, tmux, git, all installed with a package manager — which makes it the power route and the one this guide leans on.

Android is also honest about a thing iOS hides: it will kill your background process to save battery, and it will tell you so. Most of the Android-specific work is persuading it not to.

The clients.

Sources and prices from each project’s own pages, September 2026.

ClientPriceWhere to get itKeysMosh
TermuxFree; open sourceF-Droid or GitHub releases — the Play build is a separate, experimental onessh-keygen, as on LinuxYes — pkg install mosh
ConnectBotFree; Apache-2.0Play Store, F-Droid, GitHub releasesGenerated and stored in the app; public-key auth and port forwards built inNo
TermiusStarter free; Pro $10/month billed annuallyPlay StoreGenerated in app; biometric keys in the Android Keystore on ProYes
JuiceSSHGone from the Play Store; the listing returns not found

The route, with Termux.

  1. 01Install Termux from F-Droid, not the Play Store

    Get the APK from F-Droid or the project’s GitHub releases. The Play Store build is a separate experimental one for Android 11 and later with missing functionality, and because the builds are signed with different keys, switching sources later means a full uninstall. Pick one and stay. Then bring the package lists up to date.

    pkg upgrade
  2. 02Install OpenSSH and make a key

    Termux’s pkg is a front end over apt. Install OpenSSH, tmux, and mosh in one go, generate an Ed25519 key, and append the public half to ~/.ssh/authorized_keys on the host. If you would rather not touch a shell for this, ConnectBot generates and stores keys in the app, and Termius does it under Keychain → New key, with a biometric key in the Android Keystore on its Pro plan.

    pkg install openssh tmux mosh ssh-keygen -t ed25519 cat ~/.ssh/id_ed25519.pub
  3. 03Reach the host

    On the same Wi‑Fi, ssh user@192.168.1.20 works as it would from a laptop. From anywhere else, put the phone and the host on a tailnet: Tailscale for Android is on the Play Store and the personal plan is free, and Tailscale SSH can replace the key step for Linux and macOS hosts. A port forward to 22 on the router is the fallback, and it puts sshd on the public internet, so if you take it, disable password login.

  4. 04Keep the session with tmux, and the channel with mosh

    tmux keeps the shell alive on the host when the phone disappears; mosh keeps the connection alive while the phone roams from Wi‑Fi to cellular and back. mosh needs UDP 60000–61000 open beside port 22 and syncs only the visible screen, which is why mosh.org tells you to run tmux underneath. Start every job inside tmux, without exception.

    mosh user@host tmux attach -t work || tmux new -s work
    Each time, from the phone
  5. 05Stop Android from killing it

    Android will end a background Termux the moment the battery manager decides to, and vendors differ wildly — dontkillmyapp.com ranks them, and stock Android is the gentlest. Two settings help: tap Acquire wakelock in Termux’s persistent notification so the CPU stays awake while a job runs, and set Termux’s battery usage to Unrestricted in Android’s app settings. Then don’t rely on either. With tmux on the host, a killed app costs a reconnect, not the work.

  6. 06Hardware keyboards and DeX

    Termux’s extra-keys row — Esc, Tab, Ctrl, Alt, and arrows by default, configurable in ~/.termux/termux.properties and reloaded with termux-reload-settings — is what makes the on-screen keyboard bearable; Termius hides its own bar automatically when a hardware keyboard connects. On a Samsung phone, DeX turns a monitor or TV, wired or wireless, into a desktop with windowed apps: a terminal beside a browser is a legitimate working setup, and the phone is still the phone.

    extra-keys = [[ESC, TAB, CTRL, ALT, {key: '-', popup: '|'}, DOWN, UP]]
    ~/.termux/termux.properties — the default row

The Android-specific pain, named.

The battery manager

Every vendor tunes it differently, and the settings move between Android versions. A session that survived on a Pixel dies on a Samsung. The only reliable defence is a session that doesn’t live on the phone at all.

Two Termuxes

The F-Droid and Play builds are different apps with different signing keys. Install from one, forever, or reinstall from scratch.

Keys on a phone

A key on the device goes wherever the device goes. Biometric keys in the Keystore help; the authorized_keys entry on every host that still needs removing does not.

The same tmux discipline

Nothing persists that you didn’t start inside tmux. On a phone, where the connection is most fragile, forgetting once costs the most.

Or skip SSH entirely.

For servers you don’t control, the route above is the way in, and Termux is a fine way to walk it. For machines that are yours there is a shape with no client on the phone at all. spawnd installs one daemon on each host you own; the daemon dials out, so nothing on the host listens — no forwarded port, no VPN. On the phone, Chrome installs the console to the home screen as a web app; nothing else installs, no key lives on the phone, and the device is approved once against a short code. Revoking it is one click that every host honors.

The battery manager stops mattering, because the session was never on the phone. Each one is owned by a worker process on the host, so it survives the closed tab, the dropped connection, and a daemon restart, scrollback intact, with no tmux to remember. What the phone opens onto is one workspace per project, a grid of sessions across hosts, an attention cue when an agent is waiting on a yes, and a notification so you don’t have to keep checking. Your browser talks to each daemon peer-to-peer, end-to-end encrypted; the server that introduces them never sees session content. It is open source, MIT/Apache-2.0. The iOS half of this route is SSH from an iPhone, and Termius alternatives ranks the clients beside the route that needs none.

Start

One line on the host, nothing on the phone.

$curl -fsSL https://spawnd.dev/install.sh | sh
Sign up free
Install the daemon

Questions

Is JuiceSSH still available?
Not from the Play Store — its listing now returns a not-found page. ConnectBot (free, open source) and Termius (free tier) are the direct replacements, and Termux is the power route.
Should I install Termux from Google Play or F-Droid?
F-Droid or the GitHub releases. The Play build is a separate experimental version with missing functionality, and it is signed with a different key, so you cannot switch between the two without uninstalling.
Why does Android keep killing my SSH session?
Battery optimisation, and some vendors are aggressive about it. Acquire Termux’s wakelock, set its battery usage to unrestricted, and run tmux on the host so a kill costs a reconnect rather than the job. Or use a console where the session never lived on the phone.