Android · открытый исходный код
SSH Mobile
Ваши серверы. Всегда под рукой
Нативный SSH-клиент для Android: интерактивный терминал, SFTP, ключи, jump host и проброс портов. Без рекламы, аналитики и облака — серверы и учётные данные остаются на устройстве.
Статус / В RuStore — 0.1.2 · 0.3.0 на модерации
- Android
- 10+
- Android
- языки
- RU · EN
- языки
- трекеров
- 0
- трекеров
$ ssh deploy@prod-web-01
Welcome to Ubuntu 24.04 LTS
deploy@prod-web-01:~$ htop
deploy@prod-web-01:~$ vim nginx.conf
01 — Возможности
Всё для работы с сервером — без ноутбука
Восемь блоков, которые закрывают повседневное администрирование: от подключения по ключу до правки конфигов и передачи файлов.
- 01
Интерактивный терминал
VT100/xterm с поддержкой bash, zsh, htop, vim, nano и less. Экранные клавиши Ctrl, Alt, Esc и Tab, стрелки, копирование и вставка.
ssh · pty - 02
Файлы по SFTP
Просмотр каталогов, создание папок, переименование, удаление и смена прав. Загрузка и скачивание через системный выбор файлов с прогрессом и очередью.
sftp · 0.3 - 03
Пароль и SSH-ключи
Ключи PEM и OpenSSH с passphrase, импорт из файла, вход по паролю. Ключ и пароль шифруются перед сохранением в базу приложения.
auth - 04
Jump host
Подключение через сохранённый сервер-шлюз. Проверяются оба host key — и шлюза, и целевого сервера; вложенные цепочки не поддерживаются.
proxyjump - 05
Проброс портов
Локальный и удалённый форвардинг. По умолчанию проброс слушает 127.0.0.1 и закрывается вместе с SSH-сессией.
forwarding - 06
Несколько сессий
Держите открытыми несколько подключений сразу, переключайтесь между ними и переподключайтесь после обрыва связи без потери списка серверов.
sessions - 07
Сниппеты и история
Частые команды — под рукой. История ввода выключена по умолчанию, хранится зашифрованной и не перехватывает стрелки в TUI-программах.
local - 08
Защита учётных данных
Android Keystore с AES-256-GCM, проверка host key по SHA-256, предупреждение при смене ключа сервера и экспорт конфигурации без секретов.
keystore
SFTP, ProxyJump, проброс портов и расширенный терминал добавлены в версии 0.3.0 из репозитория; в RuStore на дату сборки доступна 0.1.2.
02 — Скриншоты
Как это выглядит на телефоне
Реальные экраны из репозитория проекта. Нажмите на снимок, чтобы открыть его крупнее и полистать галерею.
Нажмите на скриншот для увеличения
1 из 7
—
03 — Преимущества
Сделано под Android, а не под браузер
Приложение собрано на Kotlin и Jetpack Compose. Никакой WebView-обёртки, тяжёлых SDK и фоновой телеметрии.
- language
- Kotlin 2.1
- ui
- Jetpack Compose
- ssh client
- SSHJ
- storage
- Room + Keystore
- minSdk
- 29 / Android 10+
- license
- Apache-2.0
-
01
Нативный Android
Kotlin, Jetpack Compose и SSH-транспорт SSHJ. Приложение ведёт себя как системное: тёмная тема, жесты, экранные клавиши, предсказуемая работа клавиатуры.
-
02
Русский интерфейс
Русский и английский языки с мгновенным переключением без перезапуска. Все строки, диалоги и ошибки локализованы.
-
03
Удобное управление
Панель Ctrl/Alt/Esc/Tab, выбор моноширинного шрифта, размера текста и четырёх цветовых схем терминала — под маленький экран и одну руку.
-
04
Локальные данные
Нет аккаунтов, аналитики, рекламных SDK и облачной синхронизации. Резервное копирование средствами Android отключено, данные удаляются вместе с приложением.
- open source
Apache-2.0 · dev.sshmobile
github.com/mars485/ssh-mobile
04 — Безопасность
Учётные данные не покидают устройство
Модель угроз и детали реализации описаны в документации проекта. Ниже — то, что можно проверить в коде и на устройстве.
cipher AES/GCM/NoPadding
key AndroidKeyStore (non-exportable)
store Room · secrets sealed
backup android:allowBackup="false" - key · non-exportable
Android Keystore
Пароли, приватные ключи и passphrase шифруются ключом, который создаётся в аппаратно-защищённом хранилище Android и не экспортируется. Расшифровка — только для активного подключения.
- aead
AES-256-GCM
Симметричное шифрование с аутентификацией: изменение шифротекста обнаруживается при расшифровке. Секреты не попадают в логи и не выгружаются в резервные копии.
- tofu · sha-256
Проверка host key
При первом подключении показывается SHA-256 fingerprint сервера. Смена ключа требует явного подтверждения — в том числе при работе через jump host.
- no secrets
Контроль экспорта
Экспорт конфигурации выгружает серверы и настройки, но не пароли, приватные ключи и passphrase. Импорт позволяет сохранить сервер и заполнить учётные данные позже.
Чего в приложении нет
- аналитики и crash-репортинга
- рекламных и трекинговых SDK
- облачной синхронизации и аккаунтов
- чтения буфера обмена без действия пользователя
05 — Как начать
Три шага до первого подключения
Нужен только телефон и доступ к любому SSH-серверу. Демо-аккаунта нет по соображениям безопасности — тестовый сервер поднимается локально.
- 01
Установите приложение
Откройте карточку в RuStore и установите актуальную версию. Для сборки из исходников нужен Android Studio и JDK 17.
git clone https://github.com/mars485/ssh-mobile - 02
Добавьте сервер
Укажите имя, адрес, порт и пользователя. Выберите вход по паролю или вставьте приватный ключ, при необходимости — passphrase.
host: 192.0.2.10 port: 22 user: deploy - 03
Подключитесь
Проверьте SHA-256 fingerprint сервера и подтвердите его. Дальше — обычный терминал: команды, htop, редакторы, передача файлов по SFTP.
SHA256:9f2c…a71b accepted
APK из репозитория — релизные сборки. Для проверки советуем собственный тестовый sshd: инструкция в docs/TESTING.md.
Открыть в RuStore06 — История версий
Что менялось
Полный список изменений ведётся в CHANGELOG.md репозитория.
-
0.3.0
8 ноября 2026 на модерации RuStore- SFTP: файловый менеджер, загрузка и скачивание через SAF, очередь передач, права доступа.
- Сниппеты команд и локальная история с шифрованием, выбор шрифта и четыре цветовые схемы.
- Jump host, локальный и удалённый проброс портов.
- Экспорт и импорт конфигурации без паролей и ключей.
-
0.1.2
29 октября 2026 в RuStore- Исправлено падение при открытии экрана добавления сервера после локализации.
- Импорт SSH-ключа через системный выбор файла снова работает.
- Проверено на HONOR Android 14 и эмуляторе Android 15.
-
0.1.1
29 октября 2026- Русская локализация и переключение языка без перезапуска.
- Форма сервера больше не перекрывается экранной клавиатурой.
- Материалы для RuStore, политика конфиденциальности и лицензии.
-
0.1.0
29 октября 2026- Первый MVP: менеджер серверов, пароль и SSH-ключ, PTY-терминал.
- Проверка host key, Android Keystore, несколько сессий, переподключение.
- 40 автоматических тестов; проверка на Android 14 и 15.
07 — FAQ
Частые вопросы
Если ответа нет — создайте issue в репозитории: это самый быстрый канал поддержки.
GitHub IssuesПриложение бесплатное?
Да. SSH Mobile распространяется бесплатно, без рекламы, встроенных покупок и подписок. Исходный код открыт на GitHub под лицензией Apache-2.0.
Нужен ли собственный сервер?
Да. Приложение подключается к любому серверу с SSH: VPS, домашний сервер, Raspberry Pi, роутер. Публичного демо-сервера нет — как поднять локальный sshd для проверки, описано в docs/TESTING.md.
Какие способы входа поддерживаются?
Пароль и приватный ключ в форматах PEM и OpenSSH, в том числе с passphrase. Ключ можно вставить текстом или импортировать из файла через системный выбор файлов.
Данные куда-то передаются?
Нет. В приложении нет аналитики, crash-репортинга и трекеров. Соединения устанавливаются только к серверам, которые вы добавили сами, а серверы, ключи и отпечатки host key хранятся на устройстве.
Есть ли SFTP и проброс портов?
Да, в версии 0.3.0: файловый менеджер SFTP с очередью передач, jump host, локальный и удалённый проброс портов. На дату публикации сайта в RuStore доступна 0.1.2, версия 0.3.0 находится на модерации; собрать её можно из репозитория.
Какая минимальная версия Android?
Android 10 и новее. Приложение проверено на HONOR с Android 14 и на эмуляторе Android 15.
Можно ли перенести серверы на новый телефон?
Да, через экспорт и импорт конфигурации. Пароли, приватные ключи и passphrase в файл не попадают — их нужно ввести заново. Автоматической синхронизации через облако нет.
Где сообщить об ошибке или уязвимости?
Об ошибках — в GitHub Issues. Об уязвимостях — по инструкции из docs/SECURITY.md; не прикладывайте реальные пароли и приватные ключи.