¿Hay algún cliente SSH de línea de comandos disponible para teléfonos Android rooteados?

23

Por supuesto, tengo ConnectBot, pero estoy buscando algo que pueda escribir.

Editar: para aclarar aquí, no estoy interesado en ejecutar scripts desde una terminal. Lo que quiero hacer es ejecutar un comando SSH de manera automatizada / programada. Tasker y Locale Execute son el equivalente de cron, todo lo que necesito es el comando 'ssh' para ejecutar desde el script.

ÁRBOL
fuente
Para la capacidad de escritura, tengo la intención de usar Tasker, ya sea directamente o a través del complemento Ejecutar configuración regional appbrain.com/app/de.elmicha.app.LocaleExecute
TREE

Respuestas:

12

Puede instalar el emulador de terminal desde google. Alternativamente, existe el Better Terminal Emulator Pro . Probé el emulador de terminal en un teléfono no rooteado y parecía funcionar bien.

Better Terminal Emulator Pro incluye el cliente dropbear ssh , que se puede iniciar desde la línea de comandos o mediante un lanzador. Más información de los autores .

Hamish Downer
fuente
El emulador de terminal se cierra de manera constante en mi dispositivo, y aparentemente en muchos dispositivos de otras personas. Tampoco veo ninguna indicación de que se pueda ejecutar desde Tasker o desde la línea de comandos.
ÁRBOL
Resulta que Better Terminal Emulator Pro incluye el binario del cliente dropbear. Actualice su respuesta para incluir esa información, y la aceptaré.
ÁRBOL
1
Idealmente, nunca debe usar software de código cerrado como Better Terminal Emulator Pro para nada relacionado con la criptografía. Recomiendo construir dropbear ssh directamente desde la fuente usando las instrucciones de la gente de Cyanogen, eso es probablemente todo lo que hizo BTEP.
Jeff Burdges
1
Hay varias aplicaciones de Android de código abierto que también instalan su propia copia de cliente dropbear ssh, simplemente agregando un enlace simbólico hace que funcione bajo el Emulador de Terminal de Google.
Jeff Burdges
su enlace para el emulador de terminal de google androlib.com/android.application.com-android-term-jpAz.aspx dice "Esta aplicación parece haber sido eliminada del Android Market" No veo ningún "emulador de terminal" de Google en Google Play Store . El primer resultado en Google Play Store es el emulador de terminal Android de Jack Palevich, pero no tiene SSH.
barlop
17

Como mi pregunta original era sobre un binario ssh, y hay una respuesta para eso, aceptaré esa respuesta. Sin embargo, hay otra forma de hacer lo que quería hacer, que podría ser interesante para alguien algún día.

Tasker + ConnectBot se puede usar para ejecutar comandos remotos arbitrarios (o locales, supongo, pero Locale Execute es mejor para eso) en un horario.

Paso 1: configura tu conexión en ConnectBot.

  • Puede tener conexiones duplicadas en ConnectBot siempre que tengan diferentes alias. Debe cambiar el nombre de uno primero (lejos del usuario @ host) para crear el segundo. Mantenga pulsado y seleccione "Editar host" para realizar estos cambios.
  • Probablemente desee configurar una clave ssh sin contraseña para poder usarla para la automatización.
  • Una vez que la conexión realmente funciona, puede usar "Automatización posterior al inicio de sesión" para agregar los comandos remotos que desea ejecutar. Asegúrese de que haya una línea en blanco al final para que se envíe enter después de su último comando. Use enter o; para separar comandos. Sugiero usar algo como "echo hello" como prueba hasta que esté seguro de que las cosas funcionan, y "salir" al final si no desea dejar la conexión abierta.
  • Prueba esto de forma aislada.

Paso 2: crea una tarea Tasker para llamar a connectbot.

  • Crea una nueva tarea en Tasker.
  • Añadir una acción. En Varios, seleccione "Intento de acción"
  • Los campos son:
    • Acción: android.intent.action.VIEW
    • Gato: Predeterminado
    • Datos: URL de ssh, en forma de "ssh: // user @ host / # alias" (sin las comillas). El alias, usuario y host aquí deben coincidir con el alias que configuró en el Paso 1.
    • Objetivo: actividad
    • Haga clic en prueba. Connectbot debería abrirse y sus comandos deberían ejecutarse en el host remoto.

Paso 3: Use esta tarea en Tasker como lo haría normalmente.

ÁRBOL
fuente
¿Hay alguna manera de definir la conexión mediante programación, es decir, a través de Tasker y llamadas de intención?
Dang Khoa
No estoy seguro de eso. No recuerdo exactamente cómo encontré la información de intención anterior, pero es básicamente una URL ssh estándar. Hay herramientas que pueden investigar Intentos para aplicaciones, pero no las he usado.
ÁRBOL
Puedo agregar que si elimina los valores predeterminados para ConnectBot y tiene otro cliente ssh instalado (BTEP, por ejemplo), las URL ssh le preguntarán qué aplicación usar. Esto subraya que lo anterior es algo estándar, tanto "VER" como el formato ssh. Lo único específico de ConnectBot en este caso es el #alias al final.
ARBOL
5

Sé que es un hilo viejo pero quería hacer +1 en el comentario sobre BTEP

También estoy usando el binario ssh de BTEP aunque solo lo llamo desde su ruta en lugar de vincularlo /data/data/com.magicandroidapps.bettertermpro/bin/ssh [email protected]

o generar un par de claves y usar la autenticación de clave pública /data/data/com.magicandroidapps.bettertermpro/bin/ssh -i /data/data/com.magicandroidapps.bettertermpro/home/.ssh/id_rsa -l root 192.168.1.1

Uso el comando anterior de SL4A r4 en varios scripts y funciona bien :)

antes de poder hacer esto, necesitaba chmod a + x /data/data/com.magicandroidapps.bettertermpro/home/.ssh

una vez hecho esto y haga una copia de seguridad / restauración de BTEP con TitaniumBackup, los permisos se mantienen, esto significa que si actualiza una nueva rom, puede restaurar las aplicaciones y todos sus scripts volverán a funcionar

thewiep
fuente
5

He utilizado con éxito BotBrew Basil Experimental al ejecutar Android 4.4. BotBrew Basil Experimental se basa en apt-get, así que después de instalar APK y bootstraping, acabo de hacerlo apt-get install dropbearen un shell de raíz para instalar el cliente SSH (y el servidor).

dvim
fuente
3

Instalar emulador de terminal y quickssh. Quickssh también incluye dropbear. No le cuesta dinero, lo que no debería ser porque esto es increíblemente simple y se basa en dropbear.

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

find -name ssh usuario @ host

Problema resuelto

Martín Espinoza
fuente
1
mirando ese programa (sshdroid por beserker) solo veo una gui de servidor ssh. Luego probé el emulador de terminal por jack, pero no veo ningún comando ssh agregado. Y buscando quickssh, en Play Store, no lo veo. Solo veo quicksshd (por teslacoil) que tiene un precio pequeño y sin duda no es un cliente ssh.
barlop
2

Terminal Emulator es absolutamente compatible con scripts *. No les creas a los que no dicen nada. Tendrá que aprender el script de shell BASH, si aún no está familiarizado con él. Escriba un guión y guárdelo en su tarjeta SD. Ejecútelo con "sh filename" del término.

Si aclaras qué es lo que quieres "script" que tenga que ver con SSH, probablemente pueda darte una mejor recomendación.

* (En realidad, es el sistema operativo Android que admite scripts BASH, Terminal Emulator solo le otorga acceso al shell de Android, por lo tanto, el script es inherentemente posible)

ch3mi0n
fuente
Se actualizó la pregunta. No quiero llamar scripts con ssh, quiero llamar ssh desde un script.
ÁRBOL
Exactamente a lo que me refería. Nuevamente, si quieres dar algunos detalles, puedo ser de más ayuda.
ch3mi0n
2

Para llamar a ssh desde un script, todo lo que necesita hacer es configurar las teclas ssh. Hay un millón de instrucciones en la web, pero hay una página en el wiki de Cyanogen que podría ser más adecuada para los usuarios de Android. Una vez que configure las teclas, su comando ssh general se vería así: ssh -i / PATH / TO / KEY USER @ IP

Puede poner eso en un script, ejecutarlo y se iniciará sesión en la máquina remota.

Pero esto es lo que creo que quieres hacer. Para ejecutar solo un comando en una computadora remota, simplemente agréguelo entre comillas simples: ssh -i / PATH / TO / KEY USER @ IP 'command'

Eso ejecuta el comando en la máquina remota sin iniciar sesión. Puede ejecutar comandos con opciones, canalizaciones, redirecciones, etc., pero a veces es mejor mantenerlos simples. Excepto por el retraso, tiene el mismo aspecto que ejecutar los comandos localmente y se puede usar igual.

Locale Execute puede ser exigente con los comandos que ejecutará. Si no funciona, intente ponerlo en un script y usar Locale Execute para ejecutar el script.

Además, he tenido problemas con el binario ssh que está en el teléfono y descubrí que moverlo desde / system / xbin y crear un enlace en / system / xbin / ssh al binario ssh Better Terminal Emulator es más confiable. El binario BTEP está en /data/data/com.magicandroidapps.bettertermpro/bin/ssh


fuente
2

Botbrew es un administrador de paquetes para Android, como okpgBSD o más recientemente, como APTDebian. Bastante agradable. No tiene un cliente ssh como paquete, pero no parece demasiado difícil de instalar si está acostumbrado a crear sus propios paquetes. Y podría ser útil como una cadena de herramientas para cuando desee crear otros binarios y bibliotecas C / C ++ / etc.

Entonces, aunque esto no sea una respuesta directa, puede ser útil que algunas personas lo sepan.

Ehtesh Choudhury
fuente
Agradable. También está en Play Store: play.google.com/store/apps/details?id=com.inportb.botbrew
TREE
Lamentablemente, parece que botbrew.com está caído, lo que bloquea la instalación.
ÁRBOL
Eso es extraño, porque creo que los paquetes están alojados en github.
Ehtesh Choudhury
2

Ahora hay un terminal llamado Termux en el que puedes instalar openssh. Disponible en Google Play Store , F-Droid y Github .

glitchphan
fuente
enlaza la aplicación desde Google Play
beeshyams
-1

AndFTP puede conectarse a través de cualquier puerto que configure, así que estoy seguro de que podría conectarse a través de SSH. Pero no estoy seguro de lo fácil que es usar el script. Yo uso la aplicación todo el tiempo para mi servidor de alojamiento y funciona muy bien.

No estoy seguro si puedes usar SSH con Terminal Emulator, pero también puedes probarlo. Uso esa aplicación con frecuencia para hacer cosas que soy demasiado flojo para hacer con ADB.

Webs
fuente
Y FTP es genial. ¿Terminal Emulator es programable?
ÁRBOL
No lo creo, no sin otra aplicación. Como mencionó anteriormente, Tasker es probablemente el camino a seguir con esto.
Webs del
-1

¿Usar un complemento ssh para Tasker? No necesita root o ssh binario entonces.

Tasker
fuente
77
¿Nombra uno? Tu respuesta podría ser útil entonces :)
Izzy
Hay "SSH Plugin Paid" para Tasker, pero es antiguo y ya no está desarrollado. El manejo de errores casi no existe, por lo que es solo ssh y no mucho más. Pero funciona.
franco
-3

Si el simple cliente ssh es interesante para usted, hice bajo la biblioteca Bionic de Android-NDK drobpear-ssh-client-only. ftp://ftp.simtreas.ru/pub/my/dropbear/dropbear-ssh-only.tgz sourse y ftp://ftp.simtreas.ru/pub/my/dropbear/ssh binary

Vladimir Oleynik
fuente
Lamentablemente, esta no es una respuesta genérica y solo funcionará en uno de x86 / ARM / MIPS, probablemente ARM. Además, el contenido vinculado probablemente desaparecerá en algún momento. La mayoría de las ROM personalizadas ya incluyen un cliente ssh cmdline puro en funcionamiento.
ce4