如何在chroot Linux上启动SSH

时间:2013-09-03 19:21:36

标签: android linux ssh chroot

我设法通过终端在Android手机上启动Linux,甚至启动SSH服务并使用ConnectBot对其进行测试。但是,这是一个手动操作。我正在考虑更多的自动化方法。

我使用了这个Linux机制:http://mitchtech.net/android-backtrack-chroot/

我认为我的主要问题是我在chroot完成之前和之后尝试做一些步骤,这似乎不适用于Android应用:

Runtime.getRuntime().exec("su");

//Mount the image
Runtime.getRuntime().exec("startbt");

//chroot into Linux
Runtime.getRuntime().exec("bt");

//From inside chroot, start the ssh service
Runtime.getRuntime().exec("/etc/init.d/ssh start");

这似乎也不起作用:

Runtime.getRuntime().exec("su & startbt & bt & /etc/init.d/ssh start");

我再次猜测这是一个被解释为chroot内部或外部的问题。我的主要任务最终是自动启动SSH服务,而不一定是通过Android应用程序。

2 个答案:

答案 0 :(得分:1)

如果你执行

Runtime.getRuntime().exec("su");

这将启动su,然后退出。下一个exec不会使用提升的权限执行。同样,在执行bt之后,下一个命令不会在chroot环境中执行。

我认为bt是一个脚本?您可以更改它以将参数传递给chroot,因此您可以将命令传递给它,例如:

...
chroot new_root /etc/init.d/ssh start
...

要运行此功能,您需要使用su选项直接将命令传递给-c。并且您需要将命令作为String数组传递(或使用ProcessBuilder):

Runtime.getRuntime().exec(new String[] {"su", "-c", "startbt; bt"});

另一种选择是让bt从命令行传递参数到chroot:

chroot new_root "$@"

然后在命令行上传递它们:

Runtime.getRuntime().exec(new String[] {"su", "-c", "startbt; bt /etc/init.d/ssh start"});

答案 1 :(得分:0)

除非你真的想以这种方式做事,否则我真的只需要下载一个SSH服务器应用程序。

我个人使用 SSHDroid

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

但是从你自己的应用程序的外观来看,你自己启动内置的ssh服务器?所以你可能已经知道你已经可以使用app了。

祝你好运。