Existem clientes SSH de linha de comando disponíveis para telefones Android com raiz?

23

É claro que tenho o ConnectBot, mas estou procurando por algo que possa criar um script.

Edit: Para esclarecer aqui, não estou interessado em executar scripts de um terminal. O que eu quero fazer é executar um comando SSH de maneira automatizada / agendada. Tasker e Locale Execute são equivalentes ao cron, tudo o que preciso é do comando 'ssh' para executar a partir do script.

ÁRVORE
fonte
Para capacidade de script, pretendo usar o Tasker, diretamente ou via plug-in Locale Execute appbrain.com/app/de.elmicha.app.LocaleExecute
TREE

Respostas:

12

Você pode instalar o Emulador de Terminal no google. Como alternativa, existe o Better Terminal Emulator Pro . Eu tentei o emulador de terminal em um telefone não rooteado e ele parecia funcionar bem.

O Better Terminal Emulator Pro inclui o cliente dropbear ssh , que pode ser iniciado a partir da linha de comando ou através de um iniciador. Mais informações dos autores .

Hamish Downer
fonte
O Emulador de Terminal fecha de forma consistente no meu dispositivo e, aparentemente, em muitos dispositivos de outras pessoas. Também não vejo nenhuma indicação de que ele possa ser executado no Tasker ou na linha de comando.
TREE
Acontece que o Better Terminal Emulator Pro inclui o binário do cliente dropbear. Atualize sua resposta para incluir essas informações, e eu as aceito.
TREE
1
Idealmente, você nunca deve usar software de código fechado como o Better Terminal Emulator Pro para qualquer coisa relacionada à criptografia. Eu recomendo a construção de dropbear ssh diretamente da fonte, usando as instruções do pessoal da Cyanogen, provavelmente é tudo o que a BTEP fez.
Jeff Burdges
1
Existem vários aplicativos Android de código aberto que instalam sua própria cópia do cliente dropbear ssh também, basta adicionar um link simbólico para que ele funcione no Emulador de terminal do Google.
Jeff Burdges
seu link para o emulador de terminal do google androlib.com/android.application.com-android-term-jpAz.aspx diz "Este aplicativo parece ter sido removido do Android Market" Não vejo 'emulador de terminal' do google na loja do Google Play . O primeiro resultado na loja google play é o emulador de terminal Android por jack palevich, mas não possui ssh.
barlop
17

Como minha pergunta original era sobre um binário ssh, e há uma resposta para isso, eu aceito essa resposta. No entanto, existe outra maneira de fazer o que eu queria, que pode ser interessante para alguém algum dia.

O Tasker + ConnectBot pode ser usado para executar comandos remotos arbitrários (ou locais, eu acho, mas o Locale Execute é melhor para isso) em um agendamento.

Etapa 1: configure sua conexão no ConnectBot.

  • Você pode ter conexões duplicadas no ConnectBot, desde que tenham aliases diferentes. Você precisa renomear um primeiro (fora do usuário @ host) para criar o segundo. Mantenha pressionado e selecione "Editar host" para executar essas alterações.
  • Você provavelmente deseja configurar uma chave ssh sem uma senha para poder usá-la para automação.
  • Quando a conexão realmente funcionar, você pode usar a "Automação pós-login" para adicionar os comandos remotos que você deseja executar. Certifique-se de que exista uma linha em branco no final para que enter seja enviado após o seu último comando. Use enter ou; para separar comandos. Sugiro usar algo como "eco olá" como teste até ter certeza de que as coisas estão funcionando e "sair" no final, se você não quiser deixar a conexão aberta.
  • Teste isso isoladamente.

Etapa 2: Crie uma tarefa do Tasker para chamar o connectbot.

  • Crie uma nova tarefa no Tasker.
  • Adicione uma ação. Em Misc, selecione "Intenção de ação"
  • Os campos são:
    • Ação: android.intent.action.VIEW
    • Gato: padrão
    • Data: ssh url, na forma de "ssh: // usuário @ host / # alias" (sem as aspas). O alias, usuário e host aqui deve corresponder ao alias que você configurou na Etapa 1.
    • Alvo: Atividade
    • Clique em teste. O Connectbot deve abrir e seus comandos devem ser executados no host remoto.

Etapa 3: Use esta tarefa no Tasker como faria normalmente.

ÁRVORE
fonte
Existe uma maneira de definir a conexão programaticamente, ou seja, via Tasker e chamando intenções?
Dang Khoa
Não tenho certeza sobre isso. Não me lembro exatamente como encontrei as informações de intenção acima, mas é basicamente um URL ssh padrão. Existem ferramentas que podem investigar o Intents para aplicativos, mas eu não os usei.
TREE
Posso acrescentar que, se você remover os padrões do ConnectBot e tiver outro cliente ssh instalado (BTEP, por exemplo), os URLs ssh solicitarão qual aplicativo usar. Isso ressalta que o acima é um padrão, tanto o "VIEW" quanto o formato ssh. A única coisa específica do ConnectBot nesse caso é o #alias no final.
TREE
5

Eu sei que é um tópico antigo, mas queria marcar com +1 o comentário sobre BTEP

Também estou usando o binário ssh do BTEP, embora apenas o chame de seu caminho, em vez de vinculá-lo /data/data/com.magicandroidapps.bettertermpro/bin/ssh [email protected]

ou gere um par de chaves e use a autenticação de chave 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

Eu uso o comando acima do SL4A r4 em vários scripts e funciona bem :)

antes que eu pudesse fazer isso, eu precisava chmod a + x /data/data/com.magicandroidapps.bettertermpro/home/.ssh

Uma vez feito isso e você fizer backup / restaurar o BTEP com TitaniumBackup, as permissões serão mantidas. Isso significa que, se você exibir uma nova ROM, poderá restaurar os aplicativos e todos os seus scripts funcionarão novamente.

thewiep
fonte
5

Eu usei com sucesso o BotBrew Basil Experimental ao executar o Android 4.4. O BotBrew Basil Experimental é baseado no apt-get, depois de instalar o APK e o bootstrap que acabei de fazer apt-get install dropbearem um shell raiz para instalar o cliente SSH (e o servidor).

dvim
fonte
3

Instale o emulador de terminal e o quickssh. Quickssh também inclui dropbear. Não custa dinheiro, o que não deveria, porque isso é surpreendentemente simples e é baseado no dropbear.

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

find -name ssh usuário @ host

Problema resolvido

Martin Espinoza
fonte
1
olhando para esse programa (sshdroid por beserker) vejo apenas uma interface do servidor ssh. Eu tentei o emulador de terminal por jack, mas não vejo nenhum comando ssh adicionado. E procurando por quickssh, na loja de jogos, eu não vejo. Eu vejo apenas o quicksshd (da teslacoil) que tem um preço pequeno e sem dúvida não é um cliente ssh.
barlop
2

O Emulador de Terminal suporta absolutamente scripts *. Não acredite nos negativistas. Você precisará aprender scripts de shell BASH, se ainda não estiver familiarizado. Escreva um script e salve-o no seu cartão SD. Execute-o com "sh filename" do Term.

Se você esclarecer o que você quer "script" relacionado ao SSH, provavelmente posso dar uma recomendação melhor.

* (Na verdade, é o sistema operacional Android que suporta scripts BASH, o Emulador de terminal apenas concede acesso ao shell do Android; portanto, é inerentemente possível que o script seja possível)

ch3mi0n
fonte
Atualizado a pergunta. Não quero chamar scripts com ssh, quero chamar ssh de um script.
ÁRVORE
Exatamente o que eu estava falando. Novamente, se você quiser dar alguns detalhes, talvez seja de mais ajuda.
ch3mi0n 24/09/10
2

Para chamar ssh a partir de um script, tudo que você precisa fazer é configurar as chaves ssh. Há um milhão de instruções na web, mas há uma página no wiki do Cyanogen que pode ser mais adequada para usuários do Android. Depois de configurar as chaves, seu comando ssh geral será mais ou menos assim: ssh -i / PATH / TO / KEY USER @ IP

Você pode colocar isso em um script, executá-lo e efetuará login na máquina remota.

Mas aqui está o que eu acho que você está querendo fazer. Para executar apenas um comando em um computador remoto, basta adicioná-lo entre aspas simples: ssh -i / PATH / TO / KEY USER @ IP 'command'

Isso executa o comando na máquina remota sem efetuar o login. Você pode executar comandos com opções, canais, redirecionamentos etc., mas às vezes é melhor mantê-los simples. Exceto pelo atraso, parece o mesmo que executar o (s) comando (s) localmente e pode ser usado da mesma forma.

O Localale Execute pode ser exigente quanto aos comandos que serão executados. Se não funcionar, tente inseri-lo em um script e usar o Locale Execute para executar o script.

Além disso, tive problemas com o binário ssh que está no telefone e descobri que movê-lo de / system / xbin e criar um link em / system / xbin / ssh para o binário ssh do Better Terminal Emulator é mais confiável. O binário BTEP está em /data/data/com.magicandroidapps.bettertermpro/bin/ssh


fonte
2

Botbrew é um gerenciador de pacotes para Android, como o okpgBSD ou mais recentemente, como o APTDebian. Muito bom. Ele não possui um cliente ssh como pacote, mas não parece muito difícil de instalar se você está acostumado a criar seus próprios pacotes. E pode ser útil como uma cadeia de ferramentas para quando você deseja criar outros binários e bibliotecas C / C ++ / etc.

Portanto, embora essa não seja uma resposta direta, pode ser útil que algumas pessoas conheçam.

Ehtesh Choudhury
fonte
Agradável. Também está na play store: play.google.com/store/apps/details?id=com.inportb.botbrew
ÁRVORE
Infelizmente, parece que o botbrew.com está fora do ar, o que bloqueia a instalação.
ÁRVORE
Isso é estranho, porque acho que os pacotes estão hospedados no github.
Ehtesh Choudhury
2

Agora existe um terminal chamado Termux no qual você pode instalar o openssh. Disponível no Google Play Store , F-Droid e Github .

glitchphan
fonte
por favor ligar o aplicativo do Google Play
beeshyams
-1

O AndFTP pode se conectar através de qualquer porta que você configurar, por isso tenho certeza de que poderia se conectar através do SSH. Mas não sei ao certo como é fácil usar o script. Eu mesmo uso o aplicativo o tempo todo para o meu servidor de hospedagem e funciona muito bem.

Não tenho certeza se você pode fazer o SSH com o Emulador de Terminal, mas você também pode tentar. Eu uso esse aplicativo frequentemente para fazer coisas que tenho preguiça de fazer com o ADB.

Webs
fonte
AndFTP é ótimo. O Emulador de Terminal é programável?
TREE
Eu acho que não, não sem outro aplicativo. Como você mencionou acima, Tasker é provavelmente o caminho a seguir.
Webs
-1

Use um plugin ssh para o Tasker? Não precisa de root ou ssh binário então.

Tasker
fonte
7
Nome um? A sua resposta poderia ser útil, então :)
Izzy
Existe o "SSH Plugin Paid" para o Tasker, mas é antigo e não é mais desenvolvido. O tratamento de erros quase não existe, portanto é apenas ssh e não muito mais. Mas funciona.
franc
-3

Se o cliente ssh simples é interessante para você, criei na biblioteca Android-NDK Bionic 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 binário

Vladimir Oleynik
fonte
Infelizmente, essa não é uma resposta genérica e funcionará apenas em um dos x86 / ARM / MIPS, provavelmente ARM. Além disso, o conteúdo vinculado provavelmente desaparecerá em algum momento. A maioria das ROMs personalizadas já inclui um cliente ssh cmdline puro em funcionamento.
ce4