在Android手机上安装kali Linux 的 Q&A
前言
在开始前,请留意右侧或者顶部的“此页内容”,在你查找需要的内容的时候可以快速跳转。但是,我还是建议在开始前将文章大致的过一遍,以在遇到问题的时候可以快速跳转到目标位置。
标签指引
热门: 使用黄色标签标记的为热门内容,是其他用户经常查找和咨询的内容。版本标签: 使用绿色标签标记的为版本更新内容,代表这一块内容在此版本发布后有所改动,并受到该版本的影响。
时效性标签: 使用灰色标签标记的内容具有时效性,可能在现在或者不远的将来失效。
安装脚本
curl -O --url https://res.hestudio.net/kali_for_android/install.sh && chmod +x install.sh && ./install.sh
感谢 @随风飘扬 对 Android14 版本优化的贡献!
教程
Q&A
一些命令
这里只说明我的教程涉及到的命令,查看其他博主教程的命令请转到对应博主的文档里查看,查看系统命令用法请访问 Kali Tools |Kali Linux Tools
开启命令
每次进入 Termux 可以通过 startkali
进入 kali Linux 终端。
当然,你也可以使用 startkali -r
直接以root
身份进入。
VNCServer 命令
本系统包预装TigerVNCServer,如果使用不习惯请自行更换。如果你向我咨询该问题,我们默认你使用TigerVNCServer
。
它的常用命令如下:
修改密码
vncpasswd
运行 vncserver
vncserver
杀死 vncserver
vncserver -kill
其他命令
VNCServer 教程 热门
小白推荐
如果你是小白,请看向这里
打开 Termux,输入
startkali
进入 Kali Linux先修改 vnc 密码,不然连不上!(只需要操作一次)
vncpasswd
- 然后输入
vncserver :1
启动 vnc 服务.
- 打开你的 VNC Viewer,点击右下角
+
号,Address 输入127.0.0.1:5901
,名称任意填。然后点击绿色按钮连接。会让你输入你刚才设置的密码,输入后就可以进入桌面系统。如果提示不安全的连接(红色英文框),请点击允许。
我开启了 vncserver 但在 VNC Viewer 页面无法进入或者使用卡顿。 热门
由于 vncserver 和桌面环境对设备配置要求较高,所以部分设备会杀掉后台进程,有的经过手动设置实现墓碑机制的设备也无法使用,因为后台被冻结了(可以使用白名单保证 termux 不被冻结)。这个问题无法根治,部分支持软件悬浮窗的手机可以尝试使用悬浮窗使 Termux 前台运行。
你可以尝试修改 Termux 的电源方案为“无限制”,很显然,使用这个东西会增加你的设备的耗电量。
如果你的设备性能较低,那无论怎么设置也解决不了这个问题,请更换设备或者尝试使用官方的 App(需要 Root 或者刷机)
部分配置比较高的手机因为它的系统版本往往是最高的,而 Termux 并未对其进行适配,所以会导致 Termux 突然崩溃。
兼容性问题
有关 Termux 的兼容性问题请浏览
如果你使用 Android 12 或以上 Android 版本,请浏览解决安卓 12 限制 32 个线程。
由于 Termux 未适配 Harmony OS,所以使用搭载有 Harmony OS 的华为或荣耀用户可能无法使用。在实际测试和用户反馈中,Harmony OS 2.0 机型(测试设备为荣耀 9x)可以使用除 vnc 之外的功能,Harmony OS 3.0 机型(测试设备为华为 MatePad Pro 2022)由于安装脚本无法识别导致无法安装。请 Harmony OS 3.0 及以上版本的用户不要咨询该问题。 该部分于 2023 年测试,可能不适用于现在的环境
请使用 Harmony OS 的用户不要咨询该问题。
vnc 怎么更换端口
默认密码
kali 的默认密码是kali
.
vnc 没有默认密码,默认密码需要你自行设置。
报错并闪退 [Process completed (signal 9) - press Enter]
热门 v4.0.2
我们已经在脚本中内置了解决方案,如果你在安装的时候跳过了这一步,请使用以下方案解决。
报错 sh: /data/data/com.termux/files/usr/bin/rm: Permission denied
热门

由于 Google Play 的策略,Termux on Google Play 的一些功能被限制。具体可以阅读下面的内容。请使用 Github 版本的 Termux,你可以直接从我的教程里直接访问。

输入密码的时候不显示密码
Linux 命令中,输入密码都是不显示的。你可以正常输入然后回车提交,但是密码不会显示。在 Linux 中,回车即代表换行,你可以联想以下打字机的工作原理,当你按下回车时候,那一行字就固定住了,通过记录屏幕上出现的文字很容易使我们的密码被利用。所以不会显示密码。
报错 Errors were encountered while processing: /var/cache/apt/archives/postgresql-15_15.3-0+deb12u1_arm64.deb
热门
如果在执行sudo apt upgrade
出现类似以下报错:
Preparing to unpack …/postgresql-15_15.3-0+deb12u1_arm64.deb …
invoke-rc.d: could not determine current runlevel
Stopping PostgreSQL 15 database server: mainError: Data directory /var/lib/postgresql/15/main must not be owned by root … failed!
failed!
invoke-rc.d: initscript postgresql, action “stop” failed.
dpkg: warning: old postgresql-15 package pre-removal script subprocess returned error exit status 1
dpkg: trying script from the new package instead …
invoke-rc.d: could not determine current runlevel
Stopping PostgreSQL 15 database server: mainError: Data directory /var/lib/postgresql/15/main must not be owned by root … failed!
failed!
invoke-rc.d: initscript postgresql, action “stop” failed.
dpkg: error processing archive /var/cache/apt/archives/postgresql-15_15.3-0+deb12u1_arm64.deb (–unpack):
new postgresql-15 package pre-removal script subprocess returned error exit status 1
Errors were encountered while processing:
/var/cache/apt/archives/postgresql-15_15.3-0+deb12u1_arm64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
解决方案参考
以下命令依次执行:
rm -rf /var/lib/dpkg/info/postgresql* && dpkg --configure -a
sudo apt update && sudo apt full-upgrade -y
不显示网卡信息,怎么联网等
由于手机设备等问题,导致 Termux 无法获取你的网卡信息,也无法使用一些基于硬件的功能。这个系统本质上是运行在 Termux 上的一个容器(类似 Docker 但不是),会自动共享你的网络状态。
如果需要调用相关硬件,请获取 Root,并在 Root 状态下使用本脚本安装 Kali Linux.详见使用 Root 权限运行。
VNC 画面色彩不对
示例

将图像质量改为 High
对部分华为/荣耀设备的兼容性
在Harmony OS Next
上,已经不存在 AOSP 代码,所以 Termux 根本不可能运行,根本无法安装,请知悉!
面向使用海思麒麟SOC 的设备,须知 Kali Linux 及其软件包未必兼容该 CPU,可能导致部分功能无法使用,请知悉!
自带的 Firefox 不能用
这个属于官方的 bug,之前没有这个问题,属于 kali 官方管辖的范围,与我无关。你可以尝试安装 Chromium
这个到底怎么玩?
它支持什么功能

安装时显示文件损坏
安装时请不要锁屏或切换后台!如因为以上操作导致安装失败,请自行清理数据再次安装。
Termux 提示Failed to fetch
示例

当出现此提示的时候,请输入
termux-change-repo
然后参照下一条操作。
报错 failed to execute child process 'dbus-launch'
高级用法
Linux 小白慎入
当你阅读本部分内容时,我们将认为你对 Linux 基础知识有一定了解。如果你是一位 Linux 小白,你应当阅读上面的内容。如果你误执行其中的命令导致你的设备无法正常使用,我们不承担任何责任。我们不希望你针对此部分内容的 Linux 基础知识向我们提问。
修改 kali 容器的启动命令
修改启动名称
在默认情况下,我们使用startkali
启动 kali 容器。你可以通过修改${PREFIX}/bin/startkali
的文件名称使得启动名称发生改变。
在文档的其他部分,我们将认为你仍然使用默认启动名称
如,原来的修改名称是startkali
,需要将其修改为kalistart
,可以使用以下命令:
mv ${PREFIX}/bin/startkali ${PREFIX}/bin/kalistart
修改启动配置
你可以通过修改${PREFIX}/bin/startkali
的内容使得配置文件发生改变。
如果你使用 vim,则应当使用以下命令编辑:
vim ${PREFIX}/bin/startkali
如果你误修改配置文件导致容器无法启动,请通过安装KA_INSTALL_PATCH_240809覆盖掉修改的配置文件。
更换默认语言 v4.0.0
我们通过读取LANG
环境变量值判断你的默认语言。在 Kali Linux 启动前,修改该变量可以修改你的 Kali Linux 语言。
提示
v4.0.0 及以后的版本会自动将语言更换为中文,在之前安装的用户可以安装KA_INSTALL_PATCH_240809更换你的配置文件。
# 中文(简体)
export LANG=zh_CN.UTF-8
如果需要修改成其他语言,请自行查阅资料。
也可以实现自动添加并启动,详见上文。
备份与恢复
Android 会给每一个安装的应用分配一个独立的用户,当应用在你重新安装的时候会重置 UserID,被打包容器内的 UserID 与 Termux 的 UserID 不同导致权限问题。如果需要备份使用,请自行打包(使用tar
打包 kali 容器文件),并不要卸载 Termux,确保备份和恢复过程使用同一个 Termux 软件。
删除
运行以下命令以删除该容器
rm -rf ~/ka_install ~/kali-arm* ${PREFIX}/bin/startkali
使用 Root 权限运行
免责声明
在 Root 状态下,你可以使用更多的功能。但是,这一切会给你的设备带来不可逆的损害,可能会导致但不限于硬件损坏、系统损害、数据丢失等问题。在操作前,请保证你熟知 Linux 的基础知识和操作能力,并拥有独立的问题解决能力。在操作该部分(及后续的使用)导致的全部问题与 heStudio 没有任何关联!!
在使用前,请保证你用于另一台设备可以在你的设备损坏的时候可以应急使用,并保证你可以承受设备完全损坏造成的损失。请备份你的所有内容,以便在数据丢失的情况下恢复你的设备。
操作方案
由于权限问题,在 Root 状态下的系统包和在非 Root 状态下的系统包权限不同,所以你不能混合使用(可以理解为在 Root 状态下安装的 Kali 无法在非 Root 状态下使用,在非 Root 状态下安装的 Kali 无法在 Root 状态下使用)。如果你之前在非 Root 状态下安装过,会丢失之前的容器数据。
- 请先在非 Root 状态下运行一次脚本并成功安装,以安装依赖和解决其他潜在问题。Termux 的包管理器
pkg
无法在 Root 状态下使用。 - 在 Termux 安装
root-repo
和tsu
.(使用系统的su
启动会重写环境变量,导致无法操作 Termux,请使用 Termux 提供的tsu
.如果你使用的 Root 管理器提供的是tsu
请尝试更名,以防止冲突) - 重启 Termux,并使用
tsu
命令进入 Root 环境。 - 重新运行安装脚本。