2011-11-29 12 views
7

¿Hay alguna forma de acceder a la funcionalidad de ConnectBot a través de intents? Quiero iniciar una sesión ssh desde mi aplicación y autenticar a través de Clave privada/pública, y luego cerrar la sesión. ¿Es esto posible con ConnectBot y, en caso afirmativo, cómo puedo llamar a los Intents? Lamentablemente, no he encontrado ninguna documentación sobre este tema :(Uso de ConnectBot con Intenciones

Respuesta

9

La respuesta a esta pregunta depende de lo que se quiere utilizar la sesión ssh para: ¿es algo programático, o qué quiere mostrar al usuario ¿una sesión de terminal o consola donde pueden escribir comandos arbitrarios? Esa segunda opción es en su mayoría bastante fácil de admitir, como se puede ver al estudiar ConnectBot manifest - la aplicación tiene un filtro de intención registrado para el ConsoleActivity que coincida con este patrón:

... no se cerrará la sesión de tarde, pero aparte de eso, se hacer todo lo que ha especificado, utilizando la propia infraestructura de ConnectBot para la conexión, y el empleo de cualquiera Claves SSH que el usuario ha registrado en la aplicación ConnectBot.

Alternativamente, que podría estar hablando de la primera opción: para su aplicación a ejecutar algún comando en particular en un servidor SSH de manera programática.

Esto no es actualmente compatible con la versión oficial de ConnectBot. Dependiendo de sus requisitos, puede imaginarse que lanzaría un intento a ConnectBot con la dirección de un servidor y un comando que desea ejecutar; eso no sería demasiado difícil de implementar para ConnectBot y le ahorraría el dolor de cabeza de aprender demasiado sobre el protocolo ssh. Sin embargo, este intento no existe, y si fuera lo hizo sería muy peligroso, cualquier aplicación en el teléfono podría usarlo para ejecutar código arbitrario con las credenciales de los usuarios en servidores remotos.

Lo hace existe es esta intención he creado en una versión parcheada de ConnectBot hace unos meses para apoyar Agit, el cliente Git para Android:

org.openintents.ssh.BIND_SSH_AGENT_SERVICE

Esta versión parcheada de ConnectBot permite ConnectBot para actuar como un agente ssh-su aplicación es responsable de administrar la conexión ssh, pero puede llamar a ConnectBot para obtener las credenciales necesarias: ConnectBot le informará qué claves públicas tiene disponibles para la conexión y lo hará. firmar el challe digital requisitos necesarios para la autenticación.El details of the protocol are on OpenIntents.org, pero básicamente se utiliza la intención de unirse a ConnectBot, obteniendo una interfaz AIDL que proporciona la funcionalidad de ssh-agent:

org.openintents.ssh.BIND_SSH_AGENT_SERVICE

Como medida de seguridad, su aplicación tendrá que declarar que utiliza esta permiso, o no será capaz de unirse al servicio:

org.openintents.ssh.permission.ACCESS_SSH_AGENT

la versión parcheada de ConnectBot puede ser descargado fuera del Android Market aquí:

https://market.android.com/details?id=com.madgag.ssh.agent

El código fuente para el parche está aquí:

http://code.google.com/r/robertotyley-connectbot-ssh-agent/source/list?name=ssh-agent

pesar de que este se encarga de la gestión de claves pública/privada, todavía te deja con tener que poner en práctica la conexión ssh dentro de tu aplicación Me gustaría recomendar la biblioteca sshj para la compatibilidad con el protocolo SSH, veo su ejemplo de un simple 'comando' de conexión:

https://github.com/shikhar/sshj/blob/v0.6.1/src/main/java/examples/Exec.java

Las librerías criptográficas castillo hinchable que normalmente se utilizan en Java para proporcionar algoritmos de cifrado, sin embargo la versión provisto con Android se ve mermada y no fácilmente anulado - en consecuencia, se debe utilizar las librerias Castillo esponjoso para un reenvasado en Android amistosa de las librerías BC:

https://github.com/rtyley/spongycastle

+0

Parece que los "detalles del protocolo de" enlace está muerto . – Equidamoid

Cuestiones relacionadas