Termux远程交互式Shell访问指南

12次阅读
没有评论

解决 Termux 交互式 Shell 远程访问问题

背景

Termux 是一个强大的 Android 应用程序,可以在安卓设备上直接运行 Linux 命令。尽管它可以方便地通过 ADB 实现远程管理和控制,但想要在 Termux 中获得交互式的 shell 并不太直观。本文将详细介绍如何使用 run-as 命令来实现这一目标。

问题

用户希望能够在不依赖 Termux SSH 服务的情况下,在没有直接与设备进行物理交互的前提下,在终端上运行 Termux 的命令并得到交互式会话的结果。

现有解决方案

  1. 使用 ADB 发送单条命令
    shell
    adb shell input text "your command here"
    adb shell input keyevent ENTER
  2. 这个方法只能发送一条命令,并立即执行。每次都需要手动输入,效率较低。

  3. 通过 Termux .profile 启动 Termux Shell

  4. 根据评论的建议,在 .profile 文件中添加启动 sshd 的配置:
    shell
    echo 'sv up sshdsshd started' > .profile
  5. 并使用 adb shell am start -n com.termux/.HomeActivity 从命令行启动 Termux。这样就会立即开启 Termux Shell。
  6. 该方法的问题是每次启动都需要额外配置,不够理想。

  7. 使用 run-as 命令远程访问 Termux

  8. 用户通过以下步骤实现交互式 Termux shell 的访问:
    shell
    adb shell
    run-as com.termux files/usr/bin/bash -lic 'export PATH=/data/data/com.termux/files/usr/bin:$PATH; export LD_PRELOAD=/data/data/com.termux/files/usr/lib/libtermux-exec.so; bash -i'

解决方案描述

  1. 确保 Termux 版本支持 debuggable 构建
  2. 通过访问 <https://github.com/termux/termux-app> 获取最新版本。对于 Play Store 应用,建议下载并安装开发版 APK(如果可得)。
  3. 使用命令 adb shell 进入 Android 的 shell 环境。

  4. 执行 run-as 命令启动 Termux Shell

  5. 在 ADB shell 中输入指令来运行交互式 Termux shell:
    shell
    adb shell run-as com.termux files/usr/bin/bash -lic 'export PATH=/data/data/com.termux/files/usr/bin:$PATH; export LD_PRELOAD=/data/data/com.termux/files/usr/lib/libtermux-exec.so; bash -i'

  6. 使用脚本简化启动流程

  7. 创建一个简单的 Bash 脚本存储在 SD 卡上,例如 /sdcard/termux-shell.sh:
    shell
    echo '#!/data/data/com.termux/files/usr/bin/bash' > /sdcard/termux-shell.sh
    echo 'run-as com.termux files/usr/bin/bash -lic "export PATH=/data/data/com.termux/files/usr/bin:\$PATH; export LD_PRELOAD=/data/data/com.termux/files/usr/lib/libtermux-exec.so; bash -i"' >> /sdcard/termux-shell.sh
    chmod +x /sdcard/termux-shell.sh

  8. 在远程主机上运行该脚本以连接 Termux:
    shell
    adb shell exec /system/bin/sh /sdcard/termux-shell.sh

注意事项

  • 确保 Termux 的 com.termux 包已安装并且其构建版本支持 run-as 功能。
  • 在某些设备上,您可能需要确保 termux 为 debuggable 构建。如遇到特定错误 run-as: package not debuggable,请确认所使用的 Termux 版本是否在开发版本中可用或联系开发者。

以上步骤可以帮助用户实现远程和交互式的 Termux shell 访问,极大地方便了对设备的调试与操作。

正文完