Gibt es Befehlszeilen-SSH-Clients für verwurzelte Android-Telefone?


23

Ich habe natürlich ConnectBot, aber ich suche nach etwas, das ich schreiben kann.

Edit: Um zu klären , hier, ich bin nicht daran interessiert, läuft Skripte von einem Terminal. Ich möchte einen SSH-Befehl auf automatisierte / geplante Weise ausführen. Tasker und Locale Execute das Äquivalent von cron, alles was ich brauche sind , ist die ‚ssh‘ Befehl auszuführen aus dem Skript.


Für Skript, ich bin der Absicht Tasker zu verwenden, entweder direkt oder über Locale Execute Plug-In appbrain.com/app/de.elmicha.app.LocaleExecute
TREE

Antworten:


12

Sie können den Terminal-Emulator von Google installieren . Alternativ gibt es den Better Terminal Emulator Pro . Ich habe den Terminal-Emulator auf einem nicht verwurzelten Telefon ausprobiert und es schien gut zu funktionieren.

Better Terminal Emulator Pro enthält den dropbear ssh-Client , der über die Befehlszeile oder über einen Launcher gestartet werden kann. Mehr Infos von den Autoren .


Der Terminal-Emulator wird auf meinem Gerät und anscheinend auf vielen anderen Geräten automatisch geschlossen. Ich sehe auch keinen Hinweis darauf, dass es über Tasker oder die Befehlszeile ausgeführt werden kann.
BAUM

Es stellt sich heraus, dass Better Terminal Emulator Pro die Binärdatei des Dropbear-Clients enthält. Aktualisieren Sie Ihre Antwort, um diese Informationen einzuschließen, und ich werde sie akzeptieren.
TREE

1
Idealerweise sollten Sie niemals Closed-Source-Software wie Better Terminal Emulator Pro für kryptografische Zwecke verwenden. Ich würde empfehlen, dropbear ssh direkt von der Quelle aus unter Verwendung der Anweisungen der Cyanogen-Leute zu erstellen, das ist wahrscheinlich alles, was BTEP getan hat.
Jeff Burdges

1
Es gibt verschiedene Open-Source-Android-Anwendungen, die auch ihre eigene Dropbear-SSH-Client-Kopie installieren. Wenn Sie einfach einen Symlink hinzufügen, funktioniert dies unter dem Terminal-Emulator von Google.
Jeff Burdges

Ihr Link für den Terminal-Emulator von Google androlib.com/android.application.com-android-term-jpAz.aspx besagt: "Diese Anwendung wurde anscheinend aus dem Android Market entfernt." Im Google Play Store wird kein "Terminal-Emulator" von Google angezeigt . Das erste Ergebnis im Google Play Store ist der Android Terminal Emulator von Jack Palevich, der jedoch kein SSH hat.
Barlop

17

Da es sich bei meiner ursprünglichen Frage um eine SSH-Binärdatei handelte und es eine Antwort darauf gibt, akzeptiere ich diese Antwort. Es gibt jedoch eine andere Möglichkeit, das zu tun, was ich tun wollte, die eines Tages für jemanden interessant sein könnte.

Tasker + ConnectBot kann verwendet werden, um beliebige entfernte (oder lokale, denke ich, aber Locale Execute ist besser dafür) Befehle nach einem Zeitplan auszuführen.

Schritt 1: Richten Sie Ihre Verbindung in ConnectBot ein.

  • Sie können in ConnectBot doppelte Verbindungen haben, solange sie unterschiedliche Aliase haben. Sie müssen einen zuerst umbenennen (von user @ host entfernt), um den zweiten zu erstellen. Lang drücken und "Edit Host" auswählen, um diese Änderungen durchzuführen.
  • Sie möchten wahrscheinlich einen SSH-Schlüssel ohne Kennwort einrichten, damit Sie diesen für die Automatisierung verwenden können.
  • Sobald die Verbindung tatsächlich hergestellt ist, können Sie mit "Automatisierung nach der Anmeldung" die Remote-Befehle hinzufügen, die Sie ausführen möchten. Stellen Sie sicher, dass am Ende eine leere Zeile steht, damit die Eingabe nach Ihrem letzten Befehl gesendet wird. Benutzen Sie enter oder; Befehle zu trennen. Ich schlage vor, als Test etwas wie "Hallo Echo" zu verwenden, bis Sie sicher sind, dass die Dinge funktionieren, und am Ende "Beenden", wenn Sie die Verbindung nicht offen lassen möchten.
  • Testen Sie dies isoliert.

Schritt 2: Erstellen Sie eine Tasker-Task, um den Connectbot aufzurufen.

  • Erstellen Sie eine neue Aufgabe in Tasker.
  • Fügen Sie eine Aktion hinzu. Wählen Sie unter "Verschiedenes" die Option "Aktionsabsicht".
  • Die Felder sind:
    • Aktion: android.intent.action.VIEW
    • Katze: Standard
    • Daten: SSH-URL in Form von "ssh: // user @ host / # alias" (ohne Anführungszeichen). Der Alias, der Benutzer und der Host hier müssen mit dem in Schritt 1 eingerichteten Alias ​​übereinstimmen.
    • Ziel: Aktivität
    • Klicken Sie auf Test. Der Connectbot sollte sich öffnen und Ihre Befehle sollten auf dem Remote-Host ausgeführt werden.

Schritt 3: Verwenden Sie diese Aufgabe in Tasker wie gewohnt.


Gibt es eine Möglichkeit, die Verbindung programmatisch zu definieren, dh über Tasker und Aufrufabsichten?
Dang Khoa

Da bin ich mir nicht sicher. Ich erinnere mich nicht genau, wie ich die obigen Absichtsinformationen gefunden habe, aber es ist im Grunde eine Standard-SSH-URL. Es gibt Tools, die Absichten für Apps untersuchen können, aber ich habe diese nicht verwendet.
TREE

Ich kann hinzufügen, dass, wenn Sie die Standardeinstellungen für ConnectBot entfernen und einen anderen ssh-Client (z. B. BTEP) installiert haben, ssh-URLs nach der zu verwendenden App fragen. Dies unterstreicht, dass das oben Genannte ein Standard ist, sowohl "VIEW" als auch das ssh-Format. Das einzige, was in diesem Fall für ConnectBot spezifisch ist, ist das #Alias ​​am Ende.
TREE

5

Ich weiß, dass es ein alter Thread ist, wollte aber den Kommentar zu BTEP +1 geben

Ich verwende auch die BTEP-Binärdatei ssh, obwohl ich sie nur vom Pfad aus aufrufe, anstatt sie mit /data/data/com.magicandroidapps.bettertermpro/bin/ssh root@192.168.1.1 zu verknüpfen

oder generieren Sie ein Schlüsselpaar und verwenden Sie die Authentifizierung mit öffentlichem Schlüssel /data/data/com.magicandroidapps.bettertermpro/bin/ssh -i /data/data/com.magicandroidapps.bettertermpro/home/.ssh/id_rsa -l root 192.168.1.1

Ich benutze den obigen Befehl von SL4A r4 in verschiedenen Skripten und es funktioniert gut :)

Bevor ich dies tun konnte, musste ich ein + x /data/data/com.magicandroidapps.bettertermpro/home/.ssh chmodieren

Sobald dies erledigt ist und Sie BTEP mit TitaniumBackup sichern / wiederherstellen, bleiben die Berechtigungen erhalten. Wenn Sie ein neues ROM flashen, können Sie einfach die Apps wiederherstellen und alle Ihre Skripte funktionieren wieder


5

Ich habe BotBrew Basil Experimental erfolgreich unter Android 4.4 verwendet. BotBrew Basil Experimental basiert auf apt-get, also habe ich nach der Installation von APK und Bootstraping apt-get install dropbearin einer Root-Shell den SSH-Client (und -Server) installiert.


3

Installieren Sie den Terminal-Emulator und Quickssh. Quickssh enthält auch Dropbear. Kostet Sie kein Geld, was es nicht sollte, weil dies unübertrefflich einfach ist und auf Dropbear basiert.

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

find -name ssh user @ host

Problem gelöst


1
wenn ich mir das programm anschaue (sshdroid von beserker) sehe ich nur eine ssh server gui. Ich habe dann versucht, Terminal-Emulator von Jack, aber ohne ssh-Befehl hinzugefügt. Und auf der Suche nach Quickssh im Spieleladen sehe ich es nicht. Ich sehe nur quicksshd (von teslacoil), das einen kleinen Preis hat und zweifellos kein ssh-Client ist.
Barlop

2

Terminal Emulator unterstützt unbedingt Skripte *. Glauben Sie den Neinsagern nicht. Sie müssen das BASH-Shell-Scripting erlernen, wenn Sie noch nicht damit vertraut sind. Schreiben Sie ein Skript und speichern Sie es auf Ihrer SD-Karte. Führen Sie es mit "sh filename" von Term aus.

Wenn Sie klarstellen, was Sie mit SSH "skripten" möchten, kann ich Ihnen wahrscheinlich eine bessere Empfehlung geben.

* (Es ist eigentlich das Android-Betriebssystem, das BASH-Skripte unterstützt. Der Terminal-Emulator gewährt Ihnen lediglich Zugriff auf die Android-Shell. Daher ist Skripten von Natur aus möglich.)


Die Frage wurde aktualisiert. Ich möchte keine Skripte mit ssh aufrufen, ich möchte ssh von einem Skript aus aufrufen.
TREE

Genau das, worauf ich hinaus wollte. Auch hier kann ich Ihnen weiterhelfen, wenn Sie einige Einzelheiten erläutern möchten.
CH3MI0N

2

Um ssh von einem Skript aus aufzurufen, müssen Sie lediglich die ssh-Schlüssel einrichten. Es gibt eine Million Anleitungen im Web, aber es gibt eine Seite im Cyanogen-Wiki, die möglicherweise besser für Android-Benutzer geeignet ist. Sobald Sie die Schlüssel eingerichtet haben, würde Ihr allgemeiner ssh-Befehl ungefähr so ​​aussehen: ssh -i / PATH / TO / KEY USER @ IP

Sie können dies in ein Skript einfügen, es ausführen und Sie werden auf dem Remote-Computer angemeldet.

Aber hier ist, was ich denke, dass Sie tun möchten. Um einen Befehl nur auf einem Remote-Computer auszuführen, müssen Sie ihn in einfache Anführungszeichen setzen: ssh -i / PATH / TO / KEY USER @ IP 'Befehl'

Dadurch wird der Befehl auf dem Remotecomputer ausgeführt, ohne dass Sie angemeldet sind. Sie können Befehle mit Optionen, Pipes, Umleitungen usw. ausführen, aber manchmal ist es besser, sie einfach zu halten. Mit Ausnahme der Verzögerung entspricht dies der lokalen Ausführung der Befehle und kann ebenfalls verwendet werden.

Locale Execute kann wählerisch sein, welche Befehle ausgeführt werden. Wenn dies nicht funktioniert, versuchen Sie, es in ein Skript einzufügen und das Skript mit Locale Execute auszuführen.

Außerdem hatte ich Probleme mit der ssh-Binärdatei, die sich auf dem Telefon befindet, und stellte fest, dass das Verschieben von / system / xbin und das Erstellen einer Verknüpfung unter / system / xbin / ssh mit der ssh-Binärdatei von Better Terminal Emulator zuverlässiger ist. Die BTEP-Binärdatei befindet sich in /data/data/com.magicandroidapps.bettertermpro/bin/ssh


2

Botbrew ist ein Paketmanager für Android, etwa okpgfür BSD oder neuerdings APTfür Debian. Sehr schön. Es gibt keinen ssh-Client als Paket, aber es sieht nicht allzu schwierig aus, wenn Sie daran gewöhnt sind, eigene Pakete zu erstellen. Und es kann als Toolchain nützlich sein, wenn Sie andere C / C ++ / etc-Binärdateien und -Bibliotheken erstellen möchten.

Obwohl dies keine direkte Antwort ist, kann es für einige Leute nützlich sein, etwas darüber zu wissen.



Leider sieht es so aus, als wäre botbrew.com ausgefallen, was die Installation blockiert.
BAUM

Das ist komisch, weil ich denke, dass die Pakete auf Github gehostet werden.
Ehtesh Choudhury


-1

AndFTP kann über jeden von Ihnen konfigurierten Port eine Verbindung herstellen, sodass ich mir sicher bin, dass die Verbindung über SSH hergestellt werden kann. Ich bin mir jedoch nicht sicher, wie einfach es ist, Skripte zu verwenden. Ich benutze die App selbst die ganze Zeit für meinen Hosting-Server und es funktioniert großartig.

Ich bin mir nicht sicher, ob Sie mit Terminal Emulator SSH können, aber Sie könnten es auch versuchen. Ich benutze diese App häufig, um Dinge zu tun, die ich mit ADB nicht machen kann.


AndFTP ist großartig. Ist der Terminal Emulator skriptfähig?
BAUM

Ich denke nicht, nicht ohne eine andere App. Wie Sie oben erwähnt haben, ist Tasker wahrscheinlich der richtige Weg, um dies zu tun.
Webs

-1

Verwenden Sie ein SSH-Plugin für Tasker? Dann brauchst du weder root noch ssh binary.


7
Name eins? Ihre Antwort könnte dann hilfreich sein :)
Izzy

Es gibt "SSH Plugin Paid" für Tasker, aber es ist alt und nicht mehr weiterentwickelt. Die Fehlerbehandlung ist so gut wie nicht vorhanden, es handelt sich also nur um ssh und nicht viel mehr. Aber es funktioniert.
Franc

-3

Wenn der einfache ssh-client für dich interessant ist, habe ich unter Android-NDK die Bionic-Bibliothek drobpear-ssh-client-only erstellt. ftp://ftp.simtreas.ru/pub/my/dropbear/dropbear-ssh-only.tgz sourse und ftp://ftp.simtreas.ru/pub/my/dropbear/ssh binary


Dies ist leider keine generische Antwort und funktioniert nur auf einem von x86 / ARM / MIPS, wahrscheinlich ARM. Auch der verlinkte Inhalt wird höchstwahrscheinlich irgendwann verschwinden. Die meisten benutzerdefinierten ROMs enthalten bereits einen funktionsfähigen, reinen cmdline ssh-Client.
Dienstag,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.