是否有可用于root用户的Android手机的命令行SSH客户端?


23

我当然有ConnectBot,但我正在寻找可以编写脚本的东西。

编辑:这里要澄清,我对从终端运行脚本不感兴趣。我想做的是以自动/预定方式运行SSH命令。Tasker和Locale Execute与cron等效,我需要的是脚本运行的“ ssh”命令。


为了提高脚本编写性,我打算直接或通过区域设置执行插件使用Tasker appbrain.com/app/de.elmicha.app.LocaleExecute
TREE

Answers:


12

您可以从Google 安装终端仿真器。另外,还有Better Terminal Emulator Pro。我在非root用户的电话上尝试了“终端仿真器”,它似乎工作正常。

Better Terminal Emulator Pro包括dropbear ssh客户端,可以从命令行或通过启动器启动。作者提供的更多信息


终端仿真器在我的设备上,甚至在其他许多人的设备上,始终强制关闭。我也看不到任何可以从Tasker或命令行运行的迹象。
TREE

事实证明,Better Terminal Emulator Pro确实包含了dropbear客户端二进制文件。更新您的答案以包含该信息,我会接受。
TREE

1
理想情况下,对于任何与密码学有关的事情,都绝对不要使用诸如Better Terminal Emulator Pro之类的开源软件。我建议直接使用Cyanogen的说明从源代码直接构建dropbear ssh,这可能是BTEP所做的。
杰夫·伯奇斯

1
也有各种各样的开源android应用程序也安装了自己的dropbear ssh客户端副本,只需添加一个符号链接即可使其在Google的Terminal Emulator下运行。
杰夫·伯奇斯

您从google androlib.com/android.application.com-android-term-jpAz.aspx获得的终端仿真器链接 显示 “此应用程序似乎已从Android Market中删除”,我看不到Google在Google Play商店中没有“终端仿真器” 。Google Play商店中的第一个结果是杰克·帕莱维奇(Jack Palevich)的Android终端模拟器,但没有ssh。
barlop 2014年

17

由于我最初的问题是关于ssh二进制文件的,因此有一个答案,我将接受该答案。但是,还有另一种方式可以做我想做的事,某天可能对某人很有趣。

Tasker + ConnectBot可用于按计划执行任意远程命令(或本地命令,但我认为Locale Execute更好)。

步骤1:在ConnectBot中建立连接。

  • 您可以在ConnectBot中具有重复的连接,只要它们具有不同的别名即可。您必须先重命名一个(远离user @ host)才能创建第二个。长按并选择“编辑主机”以执行这些更改。
  • 您可能希望设置不带密码的ssh密钥,以便可以将其用于自动化。
  • 一旦连接真正起作用,就可以使用“登录后自动化”来添加要运行的远程命令。确保最后有一个空行,以便在您的最后一条命令之后发送回车。使用enter或; 分隔命令。我建议使用“ echo hello”之类的测试作为测试,直到您确定一切正常为止;如果不想断开连接,请最后使用“退出”。
  • 单独测试。

步骤2:创建Tasker任务以调用connectbot。

  • 在Tasker中创建一个新任务。
  • 添加一个动作。在“其他”中,选择“操作意图”
  • 字段是:
    • 动作:android.intent.action.VIEW
    • 猫:默认
    • 数据:ssh url,格式为“ ssh:// user @ host /#alias”(不带引号)。此处的别名,用户和主机必须与您在步骤1中设置的别名匹配。
    • 目标:活动
    • 单击测试。Connectbot应该打开,您的命令应该在远程主机上执行。

步骤3:通常,您可以在Tasker中使用此任务。


有没有办法以编程方式定义连接,即通过Tasker和调用意图?
当和河

对此我不确定。我不记得确切地是如何找到上述Intent信息的,但它基本上是一个标准的ssh URL。有一些工具可以调查应用程序的意图,但我还没有使用过。
TREE

我可以补充一点,如果您删除了ConnectBot的默认设置并安装了另一个ssh客户端(例如BTEP),那么ssh URL将提示使用哪个应用程序。这突显了以上内容是“ VIEW”和ssh格式的标准内容。在这种情况下,ConnectBot唯一特定的是最后的#alias。
TREE

5

我知道这是一个老话题,但想+1关于BTEP的评论

我也使用BTEP的ssh二进制文件,尽管我只是从它的路径中调用它,而不是将其链接到/data/data/com.magicandroidapps.bettertermpro/bin/ssh root@192.168.1.1

或生成一对密钥并使用公共密钥身份验证/data/data/com.magicandroidapps.bettertermpro/bin/ssh -i /data/data/com.magicandroidapps.bettertermpro/home/.ssh/id_rsa -l根192.168.1.1

我在各种脚本中使用了SL4A r4的上述命令,它可以正常工作:)

在执行此操作之前,我需要将chmod a + x /data/data/com.magicandroidapps.bettertermpro/home/.ssh

一旦完成此操作,并使用TitaniumBackup备份/还原BTEP,将保留权限,这意味着如果刷新新的rom,则可以恢复应用程序,并且所有脚本都将再次运行


5

运行Android 4.4时,我已成功使用BotBrew Basil Experiment。BotBrew Basil Experiment是基于apt-get的,因此在安装APK和引导程序之后,我只是apt-get install dropbear在root shell中安装了SSH客户端(和服务器)。


3

安装终端仿真器和quickssh。Quickssh还包括dropbear。不花钱,不应该花钱,因为这非常简单,并且基于dropbear。

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

find -name ssh 用户@主机

问题解决了


1
看着那个程序(beserker的sshdroid),我只能看到一个ssh服务器gui。然后,我通过jack尝试了终端仿真器,但未添加任何ssh命令。在游戏商店中寻找quickssh时,我没有看到它。我看到只有teslacoil的quicksshd(价格便宜),而且无疑不是ssh客户。
barlop 2014年

2

终端仿真器完全支持脚本*。不要相信反对者。如果您还不熟悉BASH Shell脚本,则需要学习它。编写脚本并将其保存在SD卡上。用Term中的“ sh filename”运行它。

如果您弄清楚与SSH有关的“脚本”是什么,我可能会给您更好的建议。

*(实际上是支持BASH脚本的Android操作系统,终端仿真器仅授予您对Android Shell的访问权限,因此,脚本本身是可能的)


更新了问题。我不想用ssh调用脚本,我想从脚本中调用ssh。
TREE

正是我要的。同样,如果您想提供一些细节,我可能会提供更多帮助。
ch3mi0n 2010年

2

要从脚本中调用ssh,您需要做的就是设置ssh密钥。网络上有上百万个使用指南,但Cyanogen Wiki上有一个页面可能更适合Android用户。设置密钥后,一般的ssh命令将如下所示:ssh -i / PATH / TO / KEY USER @ IP

您可以将其放在脚本中,运行它,然后您将登录到远程计算机。

但是我想这就是你想要做的。要仅在远程计算机上执行命令,只需将其添加在单引号中:ssh -i / PATH / TO / KEY USER @ IP'command'

这样可以在不登录的情况下在远程计算机上执行命令。您可以运行带有选项,管道,重定向等的命令,但有时最好使它们保持简单。除了延迟外,它看起来与本地执行命令相同,并且可以使用相同的命令。

语言环境Execute可能会选择要运行的命令。如果不起作用,请尝试将其放入脚本中,然后使用“语言环境执行”来运行脚本。

另外,我在电话上使用ssh二进制文件时遇到了问题,发现将其从/ system / xbin中移动并在/ system / xbin / ssh中创建到Better Terminal Emulator ssh二进制文件的链接更为可靠。BTEP二进制文件位于/data/data/com.magicandroidapps.bettertermpro/bin/ssh中


2

Botbrew是Android的软件包管理器okpg,例如BSD或更新版本APT的Debian等。挺好的。它没有ssh客户端作为程序包,但是如果您习惯于构建自己的程序包,则看起来并不难。当您要构建其他C / C ++ / etc二进制文件和库时,它可用作工具链。

因此,尽管这不是直接的答案,但对于某些人来说可能很有用。



可悲的是,botbrew.com似乎已关闭,阻止了安装。
TREE

这很奇怪,因为我认为这些程序包托管在github上。
Ehtesh Choudhury 2013年


-1

AndFTP可以通过您配置的任何端口进行连接,因此我确定它可以通过SSH连接。但是我不确定编写脚本的用法有多么容易。我一直在自己的托管服务器上使用该应用程序,并且效果很好。

不知道是否可以使用Terminal Emulator进行SSH,但也可以尝试使用。我经常使用该应用来完成我对ADB懒惰的工作。


AndFTP很棒。Terminal Emulator是否可以编写脚本?
TREE

我不这么认为,除非没有其他应用程序。如上所述,Tasker可能是解决此问题的方法。
腹板

-1

对Tasker使用ssh插件?然后不需要root或ssh二进制文件。


7
叫一个?那么,您的回答可能会有所帮助:)
Izzy

有适用于Tasker的“ SSH插件已付费”,但是它已经过时了并且不再开发。错误处理几乎不存在,因此它只是ssh而已。但这有效。
法郎'18

-3

如果简单的ssh客户端对您来说很有趣,我将在Android-NDK Bionic库drobpear-ssh-client-only下制作。 ftp://ftp.simtreas.ru/pub/my/dropbear/dropbear-ssh-only.tgz来源ftp://ftp.simtreas.ru/pub/my/dropbear/ssh二进制


不幸的是,这不是一个通用的答案,只能在x86 / ARM / MIPS之一(可能是ARM)上运行。而且链接的内容很可能会在某个时间消失。大多数自定义ROM已经包含一个正常工作的cmdline ssh客户端。
ce4 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.