Skip to content

Android · open source

SSH Mobile

Your servers. Always at hand

A native SSH client for Android: interactive terminal, SFTP, keys, jump host and port forwarding. No ads, no analytics, no cloud — servers and credentials stay on the device.

Status / RuStore build 0.1.2 · 0.3.0 in review

Android
10+
Android
languages
RU · EN
languages
trackers
0
trackers
htop running inside the SSH Mobile terminal
v0.3.0
prod-web-01 — terminal

$ ssh deploy@prod-web-01

Welcome to Ubuntu 24.04 LTS

deploy@prod-web-01:~$ htop

deploy@prod-web-01:~$ vim nginx.conf

01 — Features

Everything you need for a server — without a laptop

Eight areas that cover everyday administration: from key-based login to editing configs and moving files.

  • 01

    Interactive terminal

    VT100/xterm with bash, zsh, htop, vim, nano and less. On-screen Ctrl, Alt, Esc and Tab keys, arrow keys, copy and paste.

    ssh · pty
  • 02

    SFTP file manager

    Browse directories, create folders, rename, delete and change permissions. Uploads and downloads go through the system file picker with progress and a transfer queue.

    sftp · 0.3
  • 03

    Password and SSH keys

    PEM and OpenSSH keys with passphrase, file import, password login. Keys and passwords are encrypted before they reach the app database.

    auth
  • 04

    Jump host

    Connect through a saved gateway server. Both host keys are verified — the gateway and the target; nested chains are not supported.

    proxyjump
  • 05

    Port forwarding

    Local and remote forwarding. Tunnels listen on 127.0.0.1 by default and are closed together with the SSH session.

    forwarding
  • 06

    Multiple sessions

    Keep several connections open, switch between them and reconnect after a dropped link without losing the server list.

    sessions
  • 07

    Snippets and history

    Frequent commands are one tap away. Input history is off by default, stored encrypted and never intercepts arrows in full-screen TUI apps.

    local
  • 08

    Credential protection

    Android Keystore with AES-256-GCM, SHA-256 host key verification, a warning when a server key changes, and secret-free config export.

    keystore

SFTP, ProxyJump, port forwarding and the extended terminal ship in 0.3.0 from the repository; the RuStore build is 0.1.2 as of the site build date.

02 — Screenshots

How it looks on a phone

Real screenshots from the project repository. Click any shot to open it larger and browse the gallery.

All screenshots in the repository

03 — Advantages

Built for Android, not for a browser

The app is written in Kotlin and Jetpack Compose. No WebView wrapper, no heavy SDKs, no background telemetry.

language
Kotlin 2.1
ui
Jetpack Compose
ssh client
SSHJ
storage
Room + Keystore
minSdk
29 / Android 10+
license
Apache-2.0
  • 01

    Native Android

    Kotlin, Jetpack Compose and the SSHJ transport. It behaves like a system app: dark theme, gestures, on-screen keys and predictable keyboard handling.

  • 02

    Russian and English

    Two interface languages with instant switching, no restart. Every string, dialog and error message is localised.

  • 03

    Made for small screens

    Ctrl/Alt/Esc/Tab row, monospace font choice, text size and four terminal colour schemes — tuned for one hand and a phone keyboard.

  • 04

    Local data only

    No accounts, analytics, ad SDKs or cloud sync. Android backup is disabled and the data is removed together with the app.

  • open source

    Apache-2.0 · dev.sshmobile

    github.com/mars485/ssh-mobile

04 — Security

Credentials never leave the device

The threat model and implementation details live in the project docs. Below is what you can verify in the code and on a device.

keystore / credentials
cipher  AES/GCM/NoPadding
key     AndroidKeyStore (non-exportable)
store   Room · secrets sealed
backup  android:allowBackup="false"
Security documentation
  • key · non-exportable

    Android Keystore

    Passwords, private keys and passphrases are encrypted with a key created in Android hardware-backed storage and never exported. Decryption happens only for an active connection.

  • aead

    AES-256-GCM

    Authenticated symmetric encryption: tampering is detected on decrypt. Secrets never reach logs and are excluded from backups.

  • tofu · sha-256

    Host key verification

    The first connection shows the server SHA-256 fingerprint. A changed key requires explicit confirmation — including connections through a jump host.

  • no secrets

    Controlled export

    Config export contains servers and settings but no passwords, private keys or passphrases. Import lets you save a server and fill credentials later.

What the app does not have

  • analytics or crash reporting
  • advertising and tracking SDKs
  • cloud sync or accounts
  • clipboard reads without a user action

05 — Getting started

Three steps to your first connection

All you need is a phone and access to any SSH server. There is no public demo account by design — spin up a local test server instead.

  1. 01

    Install the app

    Open the RuStore card and install the current version. Building from source requires Android Studio and JDK 17.

    git clone https://github.com/mars485/ssh-mobile
  2. 02

    Add a server

    Enter a display name, host, port and user. Pick password auth or paste a private key with an optional passphrase.

    host: 192.0.2.10 port: 22 user: deploy
  3. 03

    Connect

    Check the server SHA-256 fingerprint and accept it. From there it is a regular terminal: commands, htop, editors and SFTP transfers.

    SHA256:9f2c…a71b accepted

Repository APKs are release builds. For testing, use your own sshd — see docs/TESTING.md.

Open RuStore

06 — Changelog

What changed

The full history is maintained in the repository CHANGELOG.md.

Open CHANGELOG.md
  1. 0.3.0

    8 November 2026 in RuStore review
    • SFTP: file manager, SAF uploads and downloads, transfer queue, permissions.
    • Command snippets and encrypted local history, font choice and four colour schemes.
    • Jump host, local and remote port forwarding.
    • Config export and import without passwords or keys.
  2. 0.1.2

    29 October 2026 on RuStore
    • Fixed a crash when opening the add-server screen after localisation.
    • SSH key import through the system file picker works again.
    • Verified on HONOR Android 14 and the Android 15 emulator.
  3. 0.1.1

    29 October 2026
    • Russian localisation and language switching without a restart.
    • The server form is no longer covered by the on-screen keyboard.
    • RuStore assets, privacy policy and licenses.
  4. 0.1.0

    29 October 2026
    • First MVP: server manager, password and SSH key auth, PTY terminal.
    • Host key verification, Android Keystore, multiple sessions, reconnect.
    • 40 automated tests; verified on Android 14 and 15.

07 — FAQ

Frequently asked

Missing an answer? Open an issue in the repository — it is the fastest support channel.

GitHub Issues
Is the app free?

Yes. SSH Mobile is free, with no ads, in-app purchases or subscriptions. The source code is open on GitHub under the Apache-2.0 license.

Do I need my own server?

Yes. The app connects to any SSH server: a VPS, a home server, a Raspberry Pi or a router. There is no public demo server — docs/TESTING.md explains how to run a local sshd for testing.

Which authentication methods are supported?

Password and private keys in PEM or OpenSSH format, optionally with a passphrase. Paste a key as text or import it from a file through the system file picker.

Is any data sent anywhere?

No. There is no analytics, crash reporting or tracking. Connections go only to servers you add yourself, and servers, keys and host key fingerprints stay on the device.

Are SFTP and port forwarding available?

Yes, in 0.3.0: an SFTP file manager with a transfer queue, jump host, and local plus remote port forwarding. At the time of writing, RuStore serves 0.1.2 while 0.3.0 is in review; you can build it from the repository.

What is the minimum Android version?

Android 10 or newer. The app has been verified on a HONOR device with Android 14 and on the Android 15 emulator.

Can I move my servers to a new phone?

Yes, through config export and import. Passwords, private keys and passphrases are not included — you will need to enter them again. There is no cloud sync.

Where do I report a bug or a vulnerability?

Bugs go to GitHub Issues. For vulnerabilities follow docs/SECURITY.md; never attach real passwords or private keys.

Your server, whenever you need it

Install SSH Mobile from RuStore or build the APK from source and connect to your servers from your phone.

Android 10+ · free · no ads, no trackers