Existe-t-il des clients SSH en ligne de commande pour les téléphones Android rootés?


23

J'ai bien sûr ConnectBot, mais je cherche quelque chose que je peux écrire.

Edit: Pour clarifier ici, je ne suis pas intéressé par l' exécution de scripts à partir d'un terminal. Ce que je veux faire, c'est exécuter une commande SSH de manière automatisée / planifiée. Tasker et Locale Execute sont l'équivalent de cron, tout ce dont j'ai besoin est la commande 'ssh' pour s'exécuter à partir du script.


Pour la scriptabilité, j'ai l'intention d'utiliser Tasker, directement ou via le plug-in Locale Execute appbrain.com/app/de.elmicha.app.LocaleExecute
TREE

Réponses:


12

Vous pouvez installer l' émulateur de terminal à partir de Google. Il existe également le Better Terminal Emulator Pro . J'ai essayé l'émulateur de terminal sur un téléphone non rooté et cela semblait bien fonctionner.

Better Terminal Emulator Pro comprend le client dropbear ssh , qui peut être lancé à partir de la ligne de commande ou via un lanceur. Plus d'informations des auteurs .


L'émulateur de terminal se ferme de manière cohérente sur mon appareil, et apparemment sur de nombreux appareils d'autres personnes. Je ne vois pas non plus d'indication qu'il peut être exécuté à partir de Tasker ou de la ligne de commande.
TREE

Il s'avère que Better Terminal Emulator Pro inclut le binaire du client dropbear. Mettez à jour votre réponse pour inclure cette information, et je l'accepterai.
TREE

1
Idéalement, vous ne devriez jamais utiliser de logiciel à source fermée comme Better Terminal Emulator Pro pour tout ce qui concerne la cryptographie. Je recommanderais de construire dropbear ssh directement à partir de la source en utilisant les instructions des utilisateurs de Cyanogen, c'est probablement tout ce que BTEP a fait.
Jeff Burdges

1
Il existe différentes applications Android open source qui installent également leur propre copie du client dropbear ssh, l'ajout d'un simple lien symbolique le fait fonctionner sous l'émulateur de terminal de Google.
Jeff Burdges

votre lien pour l'émulateur de terminal de google androlib.com/android.application.com-android-term-jpAz.aspx dit "Cette application semble avoir été supprimée de l'Android Market" Je ne vois aucun "émulateur de terminal" par google dans google play store . Le premier résultat dans la boutique Google Play est l'émulateur de terminal Android de Jack Palevich mais il n'a pas de SSH.
barlop

17

Puisque ma question initiale portait sur un binaire ssh, et qu'il y a une réponse à cela, j'accepte cette réponse. Cependant, il y a une autre façon de faire ce que je voulais faire, qui pourrait être intéressant pour quelqu'un un jour.

Tasker + ConnectBot peut être utilisé pour exécuter des commandes arbitraires à distance (ou locales, je suppose, mais Locale Execute est mieux pour cela) selon un calendrier.

Étape 1: configurez votre connexion dans ConnectBot.

  • Vous pouvez avoir des connexions en double dans ConnectBot tant qu'elles ont des alias différents. Vous devez renommer un premier (loin de user @ host) afin de créer le second. Appuyez longuement sur et sélectionnez "Modifier l'hôte" pour effectuer ces modifications.
  • Vous souhaiterez probablement configurer une clé ssh sans mot de passe afin de pouvoir l'utiliser pour l'automatisation.
  • Une fois que la connexion fonctionne réellement, vous pouvez utiliser "l'automatisation après la connexion" pour ajouter les commandes à distance que vous souhaitez exécuter. Assurez-vous qu'il y a une ligne vierge à la fin afin que la saisie soit envoyée après votre dernière commande. Utilisez enter ou; pour séparer les commandes. Je suggère d'utiliser quelque chose comme "echo hello" comme test jusqu'à ce que vous soyez sûr que les choses fonctionnent, et "exit" à la fin si vous ne voulez pas laisser la connexion ouverte.
  • Testez cela isolément.

Étape 2: Créez une tâche Tasker pour appeler connectbot.

  • Créez une nouvelle tâche dans Tasker.
  • Ajoutez une action. Dans Misc, sélectionnez "Action Intent"
  • Les champs sont:
    • Action: android.intent.action.VIEW
    • Chat: Par défaut
    • Données: URL ssh, sous la forme "ssh: // user @ host / # alias" (sans les guillemets). L'alias, l'utilisateur et l'hôte ici doivent correspondre à l'alias que vous avez configuré à l'étape 1.
    • Cible: activité
    • Cliquez sur Test. Connectbot devrait s'ouvrir et vos commandes devraient s'exécuter sur l'hôte distant.

Étape 3: utilisez cette tâche dans Tasker comme vous le feriez normalement.


Existe-t-il un moyen de définir la connexion par programmation, c'est-à-dire via Tasker et les intentions d'appel?
Dang Khoa

Je ne suis pas sûre de ça. Je ne me souviens pas exactement comment j'ai trouvé les informations d'intention ci-dessus, mais il s'agit essentiellement d'une URL ssh standard. Il existe des outils qui peuvent enquêter sur Intents pour les applications, mais je ne les ai pas utilisés.
TREE

Je peux ajouter que si vous supprimez les valeurs par défaut de ConnectBot et qu'un autre client ssh est installé (BTEP, par exemple), les URL ssh vous demanderont quelle application utiliser. Cela souligne que ce qui précède est quelque chose d'une norme, à la fois "VIEW" et le format ssh. La seule chose spécifique à ConnectBot dans ce cas est le #alias à la fin.
TREE

5

Je sais que c'est un vieux fil de discussion mais je voulais attribuer +1 au commentaire sur BTEP

J'utilise également le binaire ssh de BTEP bien que je l'appelle simplement à partir de son chemin au lieu de le lier /data/data/com.magicandroidapps.bettertermpro/bin/ssh root@192.168.1.1

ou générer une paire de clés et utiliser l'authentification à clé publique /data/data/com.magicandroidapps.bettertermpro/bin/ssh -i /data/data/com.magicandroidapps.bettertermpro/home/.ssh/id_rsa -l root 192.168.1.1

J'utilise la commande ci-dessus de SL4A r4 dans divers scripts et cela fonctionne bien :)

avant de pouvoir faire cela, j'avais besoin de chmod a + x /data/data/com.magicandroidapps.bettertermpro/home/.ssh

une fois que cela est fait et que vous sauvegardez / restaurez BTEP avec TitaniumBackup, les autorisations sont conservées, cela signifie que si vous flashez une nouvelle rom, vous pouvez simplement restaurer les applications et tous vos scripts fonctionneront à nouveau


5

J'ai utilisé avec succès BotBrew Basil Experimental lors de l'exécution d'Android 4.4. BotBrew Basil Experimental est basé sur apt-get, donc après avoir installé l'APK et le bootstraping, je viens de le faire apt-get install dropbeardans un shell root pour installer le client SSH (et le serveur).


3

Installez l'émulateur de terminal et quickssh. Quickssh comprend également dropbear. Cela ne vous coûte pas d'argent, ce qui ne devrait pas être le cas, car c'est extrêmement simple et basé sur Dropbear.

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

find -name ssh utilisateur @ hôte

Problème résolu


1
en regardant ce programme (sshdroid par beserker) je ne vois qu'un gui de serveur ssh. J'ai ensuite essayé l'émulateur de terminal par jack, mais je ne vois aucune commande ssh ajoutée. Et à la recherche de quickssh, dans le magasin de jeu, je ne le vois pas. Je ne vois que quicksshd (par teslacoil) qui a un petit prix et qui n'est sans doute pas un client ssh.
barlop

2

Terminal Emulator prend absolument en charge les scripts *. Ne croyez pas les opposants. Vous devrez apprendre le script shell BASH, si vous ne le connaissez pas déjà. Écrivez un script et enregistrez-le sur votre carte SD. Exécutez-le avec "sh filename" de Term.

Si vous clarifiez ce que vous voulez "scripter" avec SSH, je peux probablement vous donner une meilleure recommandation.

* (C'est en fait le système d'exploitation Android qui prend en charge les scripts BASH, l'émulateur de terminal vous accorde simplement l'accès au shell Android, donc les scripts sont intrinsèquement possibles)


Mis à jour la question. Je ne veux pas appeler de scripts avec ssh, je veux appeler ssh à partir d'un script.
TREE

Exactement ce que je voulais dire. Encore une fois, si vous voulez donner quelques détails, je serais peut-être plus utile.
ch3mi0n

2

Pour appeler ssh à partir d'un script, il vous suffit de configurer les clés ssh. Il y a un million de procédures sur le Web, mais il y a une page sur le wiki Cyanogen qui pourrait être plus adaptée aux utilisateurs d'Android. Une fois que vous avez configuré les clés, votre commande ssh générale ressemblerait à ceci: ssh -i / PATH / TO / KEY USER @ IP

Vous pouvez mettre cela dans un script, l'exécuter et vous serez connecté à la machine distante.

Mais voici ce que je pense que vous voulez faire. Pour exécuter une commande uniquement sur un ordinateur distant, ajoutez-la simplement entre guillemets simples: ssh -i / PATH / TO / KEY USER @ IP 'command'

Cela exécute la commande sur la machine distante sans vous connecter. Vous pouvez exécuter des commandes avec des options, des canaux, des redirections, etc., mais il est parfois préférable de les garder simples. À l'exception du délai, il ressemble à l'exécution locale de la ou des commandes et peut être utilisé de la même manière.

Locale Execute peut être pointilleux sur les commandes qu'il exécutera. Si cela ne fonctionne pas, essayez de le mettre dans un script et d'utiliser Locale Execute pour exécuter le script.

De plus, j'ai eu des problèmes avec le binaire ssh qui se trouve sur le téléphone et j'ai constaté que le déplacer de / system / xbin et créer un lien dans / system / xbin / ssh vers le binaire ssh de Better Terminal Emulator est plus fiable. Le binaire BTEP se trouve dans /data/data/com.magicandroidapps.bettertermpro/bin/ssh


2

Botbrew est un gestionnaire de paquets pour Android, comme okpgpour BSD ou plus récemment, comme APTpour Debian. Pas mal. Il n'a pas de client ssh en tant que package, mais il ne semble pas trop difficile à installer si vous avez l'habitude de créer vos propres packages. Et cela pourrait être utile en tant que chaîne d'outils lorsque vous souhaitez créer d'autres binaires et bibliothèques C / C ++ / etc.

Bien que ce ne soit pas une réponse directe, il peut être utile pour certaines personnes de le savoir.


Agréable. C'est aussi dans le Play Store: play.google.com/store/apps/details?id=com.inportb.botbrew
TREE

Malheureusement, il semble que botbrew.com soit en panne, ce qui bloque l'installation.
TREE

C'est bizarre, car je pense que les paquets sont hébergés sur github.
Ehtesh Choudhury


-1

AndFTP peut se connecter sur n'importe quel port que vous configurez, donc je suis sûr qu'il pourrait se connecter via SSH. Mais je ne sais pas à quel point il est facile d'en utiliser le script. J'utilise l'application moi-même tout le temps pour mon serveur d'hébergement et cela fonctionne très bien.

Je ne sais pas si vous pouvez SSH avec l'émulateur de terminal, mais vous pouvez également l'essayer. J'utilise cette application fréquemment pour faire des choses que je suis trop paresseux pour faire avec ADB.


AndFTP est super. L'émulateur de terminal est-il scriptable?
TREE

Je ne pense pas, non sans une autre application. Comme vous le mentionnez ci-dessus, Tasker est probablement la solution.
Webs

-1

Utilisez un plugin ssh pour Tasker? Pas besoin alors de binaire root ou ssh.


7
Nommez-en un? Votre réponse pourrait alors être utile :)
Izzy

Il existe "SSH Plugin Paid" pour Tasker, mais il est ancien et n'est plus développé. La gestion des erreurs est presque inexistante, donc c'est juste ssh et pas beaucoup plus. Mais ça marche.
franc

-3

Si le client ssh simple vous intéresse, j'ai fait sous la bibliothèque Android-NDK Bionic drobpear-ssh-client-only. ftp://ftp.simtreas.ru/pub/my/dropbear/dropbear-ssh-only.tgz sourse et ftp://ftp.simtreas.ru/pub/my/dropbear/ssh binaire


Ce n'est malheureusement pas une réponse générique et ne fonctionnera que sur l'un des x86 / ARM / MIPS, probablement ARM. De plus, le contenu lié disparaîtra très probablement à un moment donné. La plupart des ROM personnalisées incluent déjà un client ssh cmdline pur.
ce4
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.