Существуют ли SSH-клиенты для командной строки для телефонов с ОС Android?

23

У меня конечно есть ConnectBot, но я ищу что-то, что я могу написать.

Изменить: чтобы уточнить здесь, я не заинтересован в запуске сценариев из терминала. Что я хочу сделать, это запустить команду SSH в автоматическом / запланированном порядке. Tasker и Locale Execute эквивалентны cron, все, что мне нужно, это команда 'ssh' для запуска из скрипта.

ДЕРЕВО
источник
Для возможности написания сценариев я собираюсь использовать Tasker, либо напрямую, либо через плагин Locale Execute appbrain.com/app/de.elmicha.app.LocaleExecute
TREE

Ответы:

12

Вы можете установить эмулятор терминала из Google. В качестве альтернативы есть Better Terminal Emulator Pro . Я попробовал Эмулятор терминала на телефоне без рута, и он, кажется, работал нормально.

Better Terminal Emulator Pro включает в себя ssh-клиент dropbear , который можно запустить из командной строки или через панель запуска. Больше информации от авторов .

Хэмиш Даунер
источник
Эмулятор терминала принудительно закрывается на моем устройстве и, очевидно, на многих других устройствах. Я также не вижу никаких признаков того, что он может быть запущен из Tasker или из командной строки.
ДЕРЕВО
Оказывается, что Better Terminal Emulator Pro содержит двоичный файл клиента dropbear. Обновите свой ответ, чтобы включить эту информацию, и я приму ее.
ДЕРЕВО
1
В идеале никогда не следует использовать программное обеспечение с закрытым исходным кодом, такое как Better Terminal Emulator Pro, для чего-либо связанного с криптографией. Я бы порекомендовал собирать dropbear ssh напрямую из исходного кода, используя инструкции людей Cyanogen, это, вероятно, все, что сделал BTEP.
Джефф Берджес
1
Существуют различные приложения с открытым исходным кодом для Android, которые также устанавливают собственную копию ssh-клиента dropbear, просто добавив символическую ссылку, чтобы она работала под эмулятором терминала Google.
Джефф Берджес
Ваша ссылка на эмулятор терминала от google androlib.com/android.application.com-android-term-jpAz.aspx гласит: «Похоже, это приложение удалено из Android Market» Я не вижу «эмулятора терминала» от Google в магазине Google Play. , Первый результат в магазине Google Play - это эмулятор терминала Android, созданный Джеком Палевичем, но у него нет ssh.
Бароп
17

Поскольку мой первоначальный вопрос был о двоичном файле ssh, и на него есть ответ, я приму этот ответ. Тем не менее, есть другой способ сделать то, что я хотел сделать, вроде бы, который может быть интересен кому-то когда-нибудь.

Tasker + ConnectBot можно использовать для выполнения произвольных удаленных (или локальных, я думаю, но лучше выполнить Locale Execute) по расписанию.

Шаг 1: Настройте ваше соединение в ConnectBot.

  • В ConnectBot могут быть повторяющиеся соединения, если они имеют разные псевдонимы. Вы должны переименовать одно первое (от user @ host), чтобы создать второе. Длительно нажмите и выберите «Редактировать хост» для выполнения этих изменений.
  • Возможно, вы захотите настроить ключ ssh без пароля, чтобы вы могли использовать его для автоматизации.
  • Как только соединение действительно установится, вы можете использовать «Автоматизацию после входа в систему» ​​для добавления удаленных команд, которые вы хотели бы выполнить. Убедитесь, что в конце есть пустая строка, чтобы после последней команды вводился ввод. Используйте ввод или; разделять команды. Я предлагаю использовать что-то вроде «echo hello» в качестве теста, пока вы не будете уверены, что все работает, и «выход» в конце, если вы не хотите оставлять соединение открытым.
  • Проверьте это в изоляции.

Шаг 2: Создайте задачу Tasker для вызова connectbot.

  • Создайте новую задачу в Tasker.
  • Добавить действие. Из Разного, выберите «Действие намерения»
  • Поля:
    • Действие: android.intent.action.VIEW
    • Cat: по умолчанию
    • Данные: URL-адрес ssh, в виде «ssh: // user @ host / # alias» (без кавычек). Псевдоним, пользователь и хост здесь должны совпадать с псевдонимом, установленным на шаге 1.
    • Цель: активность
    • Нажмите Тест. Connectbot должен открыться, и ваши команды должны выполняться на удаленном хосте.

Шаг 3: Используйте эту задачу в Tasker, как обычно.

ДЕРЕВО
источник
Есть ли способ определить соединение программно, т. Е. Через Tasker и намерения вызова?
Данг Кхоа
Я не уверен в этом. Я не помню точно, как я нашел вышеуказанную информацию о намерениях, но это в основном стандартный ssh ​​URL. Существуют инструменты, которые могут исследовать Intents для приложений, но я ими не пользовался.
ДЕРЕВО
Я могу добавить, что если вы удаляете настройки по умолчанию для ConnectBot и устанавливаете другой клиент ssh (например, BTEP), тогда URL-адреса ssh подскажут, какое приложение использовать. Это подчеркивает, что вышеприведенное является чем-то стандартным, как "VIEW", так и в формате ssh. Единственная вещь, специфичная для ConnectBot в этом случае, это #alias на конце.
ДЕРЕВО
5

Я знаю, что это старая ветка, но хотел добавить +1 комментарий о BTEP

Я также использую двоичный файл BTEP ssh, хотя я просто вызываю его по его пути, а не связываю его /data/data/com.magicandroidapps.bettertermpro/bin/ssh root@192.168.1.1

или сгенерируйте пару ключей и используйте аутентификацию с открытым ключом /data/data/com.magicandroidapps.bettertermpro/bin/ssh -i /data/data/com.magicandroidapps.bettertermpro/home/.ssh/id_rsa -l root 192.168.1.1

Я использую приведенную выше команду из SL4A r4 в различных скриптах, и она отлично работает :)

прежде чем я смог сделать это, мне нужно было chmod a + x /data/data/com.magicandroidapps.bettertermpro/home/.ssh

как только это будет сделано, и вы выполните резервное копирование / восстановление BTEP с помощью TitaniumBackup, все права сохранятся. Это означает, что если вы обновляете новый диск, вы можете просто восстановить приложения, и все ваши скрипты снова будут работать

thewiep
источник
5

Я успешно использовал BotBrew Basil Experimental при использовании Android 4.4. BotBrew Basil Experimental основан на apt-get, поэтому после установки APK и начальной загрузки я только что сделал apt-get install dropbearв корневой оболочке установку SSH-клиента (и сервера).

dvim
источник
3

Установите эмулятор терминала и quickssh. Quickssh также включает dropbear. Не стоит вам денег, чего не стоит, потому что это невероятно просто и основано на dropbear.

https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid

find -name ssh пользователь @ хост

Проблема решена

Мартин Эспиноза
источник
1
глядя на эту программу (sshdroid от beserker) я вижу только графический интерфейс сервера ssh. Затем я попробовал эмулятор терминала через гнездо, но не вижу добавленной команды ssh. И, ища quickssh, в магазине игр я этого не вижу. Я вижу только quicksshd (от teslacoil), который имеет небольшую цену и, несомненно, не является клиентом ssh.
Barlop
2

Terminal Emulator абсолютно поддерживает скрипты *. Не верьте негодяям. Вам нужно будет изучить сценарии оболочки BASH, если вы еще не знакомы с ним. Напишите скрипт и сохраните его на SD-карте. Запустите его с помощью «sh filename» из Term.

Если вы проясните, что именно вы хотите «написать» о том, что делать с SSH, я, вероятно, могу дать вам лучшую рекомендацию.

* (На самом деле Android OS поддерживает сценарии BASH, Terminal Emulator просто предоставляет вам доступ к оболочке Android, поэтому сценарии по своей природе возможны)

ch3mi0n
источник
Обновил вопрос. Я не хочу вызывать сценарии с помощью ssh, я хочу вызывать ssh из сценария.
ДЕРЕВО
Именно то, что я получал. Опять же, если вы хотите дать некоторые подробности, я могу быть более полезным.
ch3mi0n
2

Чтобы вызвать ssh из скрипта, все что вам нужно сделать, это настроить ssh ключи. В Интернете есть миллион инструкций, но есть страница в Cyanogen, которая может быть более подходящей для пользователей Android. Как только вы настроите ключи, ваша общая команда ssh будет выглядеть примерно так: ssh -i / PATH / TO / KEY USER @ IP

Вы можете поместить это в скрипт, запустить его, и вы войдете в систему на удаленной машине.

Но вот что, я думаю, ты хочешь сделать. Чтобы выполнить команду только на удаленном компьютере, просто добавьте ее в одинарных кавычках: ssh -i / PATH / TO / KEY USER @ IP 'command'

Это выполняет команду на удаленном компьютере без входа в систему. Вы можете запускать команды с параметрами, каналами, перенаправлениями и т. Д., Но иногда лучше сохранять их простыми. За исключением задержки, это выглядит так же, как локальное выполнение команды, и может использоваться одинаково.

Locale Execute может быть требователен к тому, какие команды он будет запускать. Если это не работает, попробуйте поместить его в скрипт и использовать Locale Execute для запуска скрипта.

Кроме того, у меня были проблемы с двоичным файлом ssh, который находится на телефоне, и обнаружил, что перемещение его из / system / xbin и создание ссылки в / system / xbin / ssh на двоичный файл ssh двоичного файла лучшего эмулятора более надежно. Двоичный файл BTEP находится в /data/data/com.magicandroidapps.bettertermpro/bin/ssh


источник
2

Botbrew - это менеджер пакетов для Android, например, okpgдля BSD или совсем недавно, например, APTдля Debian. Довольно мило У него нет ssh-клиента в качестве пакета, но его не сложно сложить, если вы привыкли создавать собственные пакеты. И он может быть полезен как набор инструментов для создания других двоичных файлов и библиотек C / C ++ / etc.

Так что, хотя это не прямой ответ, это может быть полезно для некоторых людей.

Этеш Чоудхури
источник
Ницца. Он также находится в игровом магазине: play.google.com/store/apps/details?id=com.inportb.botbrew
TREE,
К сожалению, похоже, что botbrew.com не работает, что блокирует установку.
ДЕРЕВО
Это странно, потому что я думаю, что пакеты размещены на github.
Эхтеш Чоудхури
2

Теперь есть терминал под названием Termux, в который вы можете установить openssh. Доступно в Google Play Store , F-Droid и Github .

glitchphan
источник
пожалуйста, ссылку на приложение из Google play
beeshyams
-1

AndFTP может подключаться через любой порт, который вы настраиваете, поэтому я уверен, что он может подключаться через SSH. Но я не уверен, насколько легко написать сценарий его использования. Я все время использую приложение для своего хостинг-сервера, и оно прекрасно работает.

Не уверен, что вы можете использовать SSH с эмулятором терминала, но вы тоже можете попробовать. Я часто использую это приложение для того, чтобы делать то, что мне лень делать с АБР.

Полотна
источник
AndFTP отлично. Терминальный эмулятор скриптов?
ДЕРЕВО
Я так не думаю, не без другого приложения. Как вы упомянули выше, Tasker - это, вероятно, способ пойти с этим.
Вебс
-1

Использовать плагин ssh для Tasker? Тогда не нужен бинарный файл root или ssh.

Tasker
источник
7
Имя одно? Ваш ответ может быть полезен тогда :)
Иззи
Для Tasker есть «SSH Plugin Paid», но он устарел и больше не разрабатывается. Обработка ошибок почти не существует, так что это просто ssh и не намного. Но это работает.
Франк
-3

Если вам интересен простой ssh-клиент, я сделал под Android-NDK Bionic библиотеку drobpear-ssh-client-only. ftp://ftp.simtreas.ru/pub/my/dropbear/dropbear-ssh-only.tgz источниковедение и ftp://ftp.simtreas.ru/pub/my/dropbear/ssh бинарная

Владимир Олейник
источник
К сожалению, это не общий ответ, и он будет работать только на одном из x86 / ARM / MIPS, возможно, ARM. Также связанный контент, скорее всего, исчезнет через некоторое время. Большинство пользовательских ПЗУ уже содержат работающий чистый клиент cmdline ssh.
ce4