Sono disponibili client SSH da riga di comando per telefoni Android con root?


23

Ovviamente ho ConnectBot, ma sto cercando qualcosa che posso scrivere.

Modifica: per chiarire qui, non sono interessato a eseguire script da un terminale. Quello che voglio fare è eseguire un comando SSH in modo automatizzato / pianificato. Tasker e Locale Execute sono l'equivalente di cron, tutto ciò di cui ho bisogno è il comando 'ssh' per eseguire dallo script.


Per la scriptabilità, intendo utilizzare Tasker, direttamente o tramite il plug-in Esegui locale appbrain.com/app/de.elmicha.app.LocaleExecute
TREE

Risposte:


12

Puoi installare Terminal Emulator da google. In alternativa c'è il Better Terminal Emulator Pro . Ho provato l'emulatore di terminale su un telefono non rootato e sembrava funzionare bene.

Better Terminal Emulator Pro include il client dropshear ssh , che può essere avviato dalla riga di comando o tramite un launcher. Maggiori informazioni dagli autori .


L'emulatore di terminale si chiude costantemente sul mio dispositivo e apparentemente su molti dispositivi di altre persone. Inoltre non vedo alcuna indicazione che possa essere eseguito da Tasker o dalla riga di comando.
ALBERO,

Si scopre che Better Terminal Emulator Pro include il binario client dropbear. Aggiorna la tua risposta per includere quelle informazioni e le accetterò.
ALBERO

1
Idealmente, non dovresti mai usare software chiuso come Better Terminal Emulator Pro per qualsiasi cosa relativa alla crittografia. Consiglierei di creare dropbear ssh direttamente dalla fonte usando le istruzioni della gente di Cyanogen, questo è probabilmente tutto ciò che BTEP ha fatto.
Jeff Burdges,

1
Esistono varie applicazioni Android open source che installano anche la propria copia client ssh dropbear, semplicemente l'aggiunta di un link simbolico lo fa funzionare sotto l'emulatore di terminale di Google.
Jeff Burdges,

il tuo link per l'emulatore di terminale da google androlib.com/android.application.com-android-term-jpAz.aspx dice "Questa applicazione sembra essere rimossa da Android Market" Non vedo nessun 'emulatore di terminale' da Google nel Google Play Store . Il primo risultato nel Play Store di Google è l'emulatore di terminale Android di Jack Palevich ma non ha SSH.
barlop

17

Poiché la mia domanda originale riguardava un binario ssh e c'è una risposta per questo, accetterò quella risposta. Tuttavia, c'è un altro modo di fare quello che volevo fare, un po ', che potrebbe essere interessante per qualcuno un giorno.

Tasker + ConnectBot può essere utilizzato per eseguire comandi remoti arbitrari (o locali, suppongo, ma Locale Execute è meglio per questo) su una pianificazione.

Passaggio 1: imposta la connessione in ConnectBot.

  • Puoi avere connessioni duplicate in ConnectBot purché abbiano alias diversi. Devi rinominare uno per primo (lontano da utente @ host) per creare il secondo. Premere a lungo e selezionare "Modifica host" per eseguire queste modifiche.
  • Probabilmente vuoi impostare una chiave ssh senza una password in modo da poterla usare per l'automazione.
  • Una volta che la connessione funziona davvero, è possibile utilizzare "Automazione post-login" per aggiungere i comandi remoti che si desidera eseguire. Assicurati che ci sia una riga vuota alla fine in modo che invio venga inviato dopo l'ultimo comando. Usa invio o; per separare i comandi. Suggerisco di usare qualcosa come "echo hello" come test fino a quando non si è sicuri che le cose stiano funzionando e alla fine "exit" se non si desidera lasciare aperta la connessione.
  • Prova questo da solo.

Passaggio 2: creare un'attività Tasker per chiamare connectbot.

  • Crea una nuova attività in Tasker.
  • Aggiungi un'azione. Da Varie, selezionare "Intento azione"
  • I campi sono:
    • Azione: android.intent.action.VIEW
    • Gatto: impostazione predefinita
    • Dati: ssh url, sotto forma di "ssh: // user @ host / # alias" (senza virgolette). L'alias, l'utente e l'host qui devono corrispondere all'alias impostato nel passaggio 1.
    • Target: attività
    • Fai clic su Test. Connectbot dovrebbe aprirsi e i comandi dovrebbero essere eseguiti sull'host remoto.

Passaggio 3: utilizzare questa attività in Tasker come faresti normalmente.


Esiste un modo per definire programmaticamente la connessione, ad esempio tramite Tasker e intenti di chiamata?
Dang Khoa,

Non ne sono sicuro. Non ricordo esattamente come ho trovato le informazioni di intento sopra, ma fondamentalmente è un URL SSH standard. Esistono strumenti che possono indagare su Intents per app, ma non li ho usati.
ALBERO

Posso aggiungere che se rimuovi i valori predefiniti per ConnectBot e hai installato un altro client ssh (BTEP, ad esempio), allora gli URL ssh richiederanno quale app utilizzare. Ciò sottolinea che quanto sopra è qualcosa di standard, sia "VISUALIZZA" sia il formato ssh. L'unica cosa specifica di ConnectBot in questo caso è #alias alla fine.
ALBERO

5

So che è una vecchia discussione, ma volevo fare +1 sul commento su BTEP

Sto anche usando il binario ssh di BTEP anche se lo chiamo semplicemente dal suo percorso invece di collegarlo /data/data/com.magicandroidapps.bettertermpro/bin/ssh root@192.168.1.1

o genera una coppia di chiavi e usa l'autenticazione con chiave pubblica /data/data/com.magicandroidapps.bettertermpro/bin/ssh -i /data/data/com.magicandroidapps.bettertermpro/home/.ssh/id_rsa -l root 192.168.1.1

Uso il comando precedente di SL4A r4 in vari script e funziona bene :)

prima di poterlo fare avevo bisogno di chmod a + x /data/data/com.magicandroidapps.bettertermpro/home/.ssh

una volta fatto questo e hai eseguito il backup / ripristino di BTEP con TitaniumBackup, le autorizzazioni sono mantenute, questo significa che se esegui il flash di una nuova rom puoi semplicemente ripristinare le app e tutti gli script funzioneranno di nuovo


5

Ho usato con successo BotBrew Basil Experimental quando eseguo Android 4.4. BotBrew Basil Experimental si basa su apt-get, quindi dopo aver installato APK e il bootstrap ho fatto apt-get install dropbearuna shell root per installare il client (e il server) SSH.


3

Installa l'emulatore di terminale e quickssh. Quickssh include anche dropbear. Non ti costa denaro, cosa che non dovrebbe essere perché è straordinariamente semplice ed è basato su dropbear.

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

find -name ssh user @ host

Problema risolto


1
guardando quel programma (sshdroid di beserker) vedo solo una GUI del server SSH. Ho quindi provato l'emulatore di terminale tramite jack, ma non ho aggiunto alcun comando ssh. E cercando quickssh, nel Play Store, non lo vedo. Vedo solo quicksshd (di teslacoil) che ha un piccolo prezzo e senza dubbio non è un client SSH.
barlop

2

Terminal Emulator supporta assolutamente gli script *. Non credere ai no-sayers. Dovrai imparare lo scripting della shell BASH, se non lo conosci già. Scrivi uno script e salvalo sulla tua scheda SD. Eseguilo con "sh nomefile" da Term.

Se chiarisci che cosa vuoi "scrivere" a che fare con SSH, posso probabilmente darti una raccomandazione migliore.

* (In realtà è il sistema operativo Android che supporta gli script BASH, Terminal Emulator ti consente solo di accedere alla shell Android, quindi lo scripting è intrinsecamente possibile)


Aggiornato la domanda. Non voglio chiamare script con ssh, voglio chiamare ssh da uno script.
ALBERO

Esattamente quello che stavo arrivando. Ancora una volta, se vuoi dare alcuni dettagli, potrei essere di maggiore aiuto.
ch3mi0n

2

Per chiamare ssh da uno script, tutto ciò che devi fare è impostare i tasti ssh. Ci sono un milione di how-to sul web, ma c'è una pagina sul wiki di Cyanogen che potrebbe essere più adatta agli utenti Android. Dopo aver impostato le chiavi, il comando ssh generale sarà simile al seguente: ssh -i / PATH / TO / KEY USER @ IP

È possibile inserirlo in uno script, eseguirlo e si accederà al computer remoto.

Ma ecco cosa penso che tu voglia fare. Per eseguire un comando solo su un computer remoto, basta aggiungerlo tra virgolette singole: ssh -i / PATH / TO / KEY USER @ IP 'command'

Ciò esegue il comando sul computer remoto senza effettuare l'accesso. È possibile eseguire comandi con opzioni, pipe, reindirizzamenti ecc., Ma a volte è meglio renderli semplici. Tranne il ritardo, sembra uguale all'esecuzione dei comandi localmente e può essere utilizzato lo stesso.

Locale Execute può essere schizzinoso su quali comandi verrà eseguito. Se non funziona, prova a inserirlo in uno script e usa Locale Execute per eseguire lo script.

Inoltre, ho avuto problemi con il binario ssh sul telefono e ho scoperto che spostarlo da / system / xbin e creare un collegamento in / system / xbin / ssh nel binario ssh di Better Terminal Emulator è più affidabile. Il binario BTEP è in /data/data/com.magicandroidapps.bettertermpro/bin/ssh


2

Botbrew è un gestore di pacchetti per Android, come okpgper BSD o più recentemente, come APTper Debian. Molto carino. Non ha un client ssh come pacchetto, ma non sembra troppo difficile da inserire se sei abituato a creare i tuoi pacchetti. E potrebbe essere utile come toolchain per quando vuoi creare altri binari e librerie C / C ++ / etc.

Quindi anche se questa non è una risposta diretta, può essere utile che alcune persone lo sappiano.



Purtroppo, sembra che botbrew.com non funzioni, il che blocca l'installazione.
ALBERO

È strano, perché penso che i pacchetti siano ospitati su github.
Ehtesh Choudhury,


-1

AndFTP può connettersi su qualsiasi porta configurata, quindi sono sicuro che potrebbe connettersi tramite SSH. Ma non sono sicuro di quanto sia facile copiarne l'utilizzo. Uso sempre l'app per il mio server di hosting e funziona benissimo.

Non sono sicuro se puoi SSH con Terminal Emulator, ma puoi anche provarlo. Uso quell'app frequentemente per fare cose che sono troppo pigro per fare con ADB.


AndFTP è fantastico. Terminal Emulator è programmabile tramite script?
ALBERO,

Non la penso così, non senza un'altra app. Come accennato in precedenza, Tasker è probabilmente la strada da percorrere.
Webs,

-1

Utilizzare un plug-in ssh per Tasker? Non è necessario quindi il binario root o ssh.


7
Nome uno? La tua risposta potrebbe essere utile quindi :)
Izzy

Esiste un "plugin SSH a pagamento" per Tasker, ma è vecchio e non è più sviluppato. La gestione degli errori non esiste quasi, quindi è solo ssh e non molto di più. Ma funziona
franco

-3

Se il semplice client SSH è interessante per te, l'ho realizzato con la libreria Bionic Android-NDK drobpear-ssh-client-only. ftp://ftp.simtreas.ru/pub/my/dropbear/dropbear-ssh-only.tgz sourse e ftp://ftp.simtreas.ru/pub/my/dropbear/ssh binary


Questa non è una risposta generica purtroppo e funzionerà solo su uno di x86 / ARM / MIPS, probabilmente ARM. Anche il contenuto collegato molto probabilmente scomparirà in qualche momento. La maggior parte delle ROM personalizzate include già un client SSH cmdline puro funzionante.
Ce4,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.