编译 Android 版 OpenSSH 客户端或 Dropbear

编译 Android 版 OpenSSH 客户端或 Dropbear

我有一个有趣的问题。

我想在我的 Android 终端模拟器中使用私有 SSH 密钥(jackpal.androidterm ) 中使用私有 SSH 密钥。我想将私钥安装在相当安全的位置并且能够以相当简单的方式访问密钥。我想这样做:

ssh theotherserver

文件~/.ssh/config如下所示:

Host theotherserver
    User mycustomuser

以及正在读取的私钥~/.ssh/id_rsa

问题是 Dropbear 默认情况下会查找/data/.ssh(至少在 CyanogenMod 11 上),并且该文件夹应该属于root.我已经在目录及其子目录上执行了chownandchmod操作,以便能够与“应用程序用户”(即 , )一起使用它u0_a100,并且可以工作,但是这些权限在重新启动时会被擦除:所以不行。

我真正想做的是简单地通过配置文件告诉 Dropbear 它的主目录位于/data/data/jackpal.androidterm/app_HOME/.ssh,因为这个目录将“肯定”由“应用程序用户”拥有,并且我不会遇到任何权限问题。另一个好处是其他用户将无法读取此目录,因为它是应用程序私有的。 (dir权限是drwxrwx--x)有没有办法用配置文件来配置Dropbear来更改其默认.ssh目录的位置?如果只是使用 那就太棒了$HOME,但显然不是。

如果这是不可能的,我怎样才能编译 OpenSSH 客户端或 Dropbear for Android 来实现我的(看似简单的)目标?

答案1

正如 @xx4h 在问题评论中提到的,解决方案是将符号链接/data/.ssh/data/data/jackpal.androidterm/app_HOME/.ssh

# ln -s /data/data/jackpal.androidterm/app_HOME/.ssh /data/.ssh

这修复了它并在重新启动后保持原状。导出环境变量以方便修改 SSH 配置:

SSH_HOME="/data/data/jackpal.androidterm/app_HOME/.ssh"

要么就是这样,要么只是在其中放置另一个符号链接。

相关内容