Нужен шелл с телефона, а ставить закрытый клиент с облачным аккаунтом не хочется. На Huawei часто нет Play Маркета, зато есть F-Droid. ConnectBot как раз из этой полки: первый SSH-клиент для Android, Apache-2.0, без обязательной регистрации.
9 июня 2026 года вышла версия 1.10.9. Сборка с F-Droid называется 1.10.9-oss: криптопровайдер лежит внутри APK, Google Play Services не нужны. Это удобно, когда телефон живёт без GMS.
Зачем ConnectBot, если есть Termux
Termux даёт настоящий OpenSSH: те же команды, что на Linux-десктопе. ConnectBot ближе к обычному SSH-менеджеру: список хостов, ключи в отдельном экране, сессия не обязана выглядеть как дистрибутив в кармане.
Для повседневной жизни это ровно «открытый софт, который открывает сервер с автобуса». Не облако ключей, не подписка, не аккаунт. Ключ лежит в приложении, хост сохраняется локально.
Если пароль на SSH уже выключен (так и стоит делать после рабочего ключа с компьютера), телефон обязан уметь тот же публичный ключ. Иначе ConnectBot честно напишет, что сервер не предлагает пароль и keyboard-interactive, и на этом остановится.
Откуда ставить
Три нормальных источника, в порядке предпочтения для телефона без Play:
- Пакет org.connectbot на F-Droid, сборка
-oss. - Релизы на GitHub, файл
oss, не google-вариант. - Play Store, если он на устройстве есть. Там своя сборка с обновлением криптопровайдера через сервисы Google.
Случайный APK с форума лучше не брать. F-Droid подписывает свою сборку и показывает, что APK соответствует исходникам.

На странице пакета F-Droid прямо пишет: это SSH-клиент с открытым кодом, сохранённые хосты, вход по ключу, проброс портов, цветовые схемы. И отдельно: oss-сборка не зависит от Google Play Services.

Один ключ с компьютера или новый с телефона
На сервер кладётся только строка из .pub. Приватник живёт на клиенте. Можно сгенерировать отдельный ключ в ConnectBot и дописать его публичную часть в ~/.ssh/authorized_keys. Можно взять тот же файл, которым уже заходят с Linux-десктопа.
Второй путь короче, но риск общий: украли телефон, сгорел и вход с компьютера. Тогда ключ меняют на обоих устройствах. Приватник не стоит слать почтой и мессенджером. Кабель, прямое копирование в Download, потом в приложение.
В файловом менеджере Android ключ без расширения часто выглядит как «bin file». Это нормально: OpenSSH так и хранит приватник. Импортировать нужно его, не .pub. Публичный файл на сервер уже положили, клиенту он для входа не подставляется.
Почему ConnectBot орёт «неверный пароль»
Современный ssh-keygen -t ed25519 пишет файл в формате OpenSSH:
-----BEGIN OPENSSH PRIVATE KEY-----
С OpenSSH 7.6 такие ключи по умолчанию шифруются aes256-ctr и bcrypt KDF. Tabby и обычный ssh это открывают. ConnectBot на импорте часто отвечает fail to decrypt / bad password, хотя фраза от ключа та же самая, которой только что пустили с компьютера.
Это не раскладка и не «вы опечатались». Приложение не расшифровывает новый контейнер. Обходной путь давно описан в issue 742: копия ключа в старом шифре aes256-cbc.
Команды ниже выполняются на компьютере, где лежит приватник. На сервере этого файла нет и быть не должно.
cp ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.cb ssh-keygen -p -f ~/.ssh/id_ed25519.cb -Z aes256-cbc
Сначала old passphrase (тот, которым открывается оригинал), затем новая для копии. Оригинал для десктопного клиента не трогается. На телефон копируется только id_ed25519.cb.
Если ssh-keygen говорит, что файла нет, скорее всего команда запущена по SSH на VPS. Приватник там не хранят. Проверка: hostname должен показать десктоп, не сервер.
Ключ импортировали. Его ещё надо открыть
В ConnectBot экран называется «Публичные ключи», хотя речь про пару. После импорта ключ висит с закрытым замком. Пока замок закрыт, при подключении приложение пробует «авторизацию публичными ключами с памяти» и часто шлёт пустышку или другой ключ.
Нужно тапнуть ключ и ввести passphrase копии (той, что задали после -Z aes256-cbc), не фразу оригинала для десктопного клиента. Замок открывается, тип ключа в списке: Ed25519.

Если в приложении ещё и сгенерировали второй ключ кнопкой «плюс», его публичной строки на сервере нет. Либо не выбирайте его в карточке хоста, либо скопируйте открытый ключ из меню и допишите в authorized_keys.
Карточка хоста
Долгий тап по серверу, затем правка:
- пользователь тот же, под которым ключ лежит в
authorized_keys; - адрес сервера;
- порт не 22, если sshd слушает другой (его легко забыть, тогда ConnectBot молча не попадёт в ваш sshd);
- аутентификация открытым ключом включена;
- выбран именно импортированный и разблокированный ключ;
- пароль пустой.
После этого сессия открывается обычным приглашением шелла. В списке хостов ConnectBot показывает зелёную галочку на сохранённом сервере.


Дальше это обычный Linux: htop, логи, правки конфигов. С телефона неудобно писать длинные конфиги, зато можно посмотреть нагрузку и не ждать ноутбука.

Что означает фраза про пароль и клавиатуру
Если на сервере выключены PasswordAuthentication и KbdInteractiveAuthentication, sshd предлагает только publickey. ConnectBot в этот момент пишет примерно так: пробуем ключ из памяти, сервер не поддерживает пароль и интерактивную клавиатуру.
Это не поломка sshd. Это как раз желаемое состояние. Сообщение значит: ключ не приняли, запасного входа нет. Дальше смотрят замок ключа, порт, имя пользователя и то, та ли публичная строка лежит в authorized_keys.
Выключать пароль стоит только после рабочего входа по ключу с компьютера и при живой консоли в панели хостера. Иначе один кривой reload sshd оставляет сервер без входа.
Где обычно ломается
- В ConnectBot указан
.pubвместо приватника. Другие клиенты (Tabby) на этом прямо говорят: expected a private key. - Ключ импортирован, но замок закрыт.
- Формат OpenSSH
aes256-ctr, ConnectBot не расшифровывает, кажется, что «пароль не тот». - Порт 22, а sshd слушает другой.
- На сервере в
authorized_keysнет этой публичной строки, зато есть другая. - Сессия ConnectBot переиспользует старое TCP-соединение. Для проверки закрывают все вкладки на этот хост и подключаются заново.
На Ubuntu эффективный конфиг смотрят так:
sshd -T | grep -Ei '^(port|passwordauthentication|kbdinteractiveauthentication|pubkeyauthentication) '
В логе успех выглядит как Accepted publickey и отпечаток ключа. Неудачный publickey на свежем OpenSSH часто не пишется на уровне INFO, виден обрыв [preauth].
Если ConnectBot всё равно не подходит
Termux плюс пакет openssh ест тот же файл, что и десктоп, без перекодирования шифра. Это скучнее по интерфейсу и честнее по совместимости.
pkg install openssh mkdir -p ~/.ssh && chmod 700 ~/.ssh cp ~/storage/downloads/id_ed25519 ~/.ssh/ chmod 600 ~/.ssh/id_ed25519 ssh -i ~/.ssh/id_ed25519 -p PORT -o IdentitiesOnly=yes USER@HOST
После копирования файл из Download лучше удалить, чтобы приватник остался только в ~/.ssh/.
Коротко
ConnectBot закрывает простую задачу: SSH с Android без аккаунта и без Play. С F-Droid он ставится на Huawei. Современный Ed25519 с компьютера нужно либо перешифровать копию под aes256-cbc, либо завести отдельный ключ в самом приложении. И ключ после импорта ещё разблокируют. Пароль на сервере при этом может оставаться выключенным: так и задумано.