使用SSH连接Android上的Termux
Termux是安卓系统上的一个Linux终端模拟器,通过SSH连接Termux可实现电脑对手机Linux环境的远程操作。下面将详细说明SSH连接Termux的完整流程。
一、必备工具与环境
操作前需准备相关工具,确保软硬件环境满足要求,常规安卓设备与电脑即可完成配置。
-
Termux应用:这是核心工具,建议从官方渠道(https://termux.dev/)、Google Play商店、Github或F-Droid下载,避免第三方渠道的修改版以保障安全性和稳定性。
-
网络环境:如果是局域网连接,手机和电脑需处于同一局域网络;如果是远程连接,手机需要能正常访问互联网。
-
工具准备:Windows系统推荐使用Windterm(免费开源)或系统自带的PowerShell(Windows 10及以上版本已内置SSH客户端);macOS和Linux系统自带终端,直接支持SSH命令,也可使用Windterm;远程连接若采用Zerotier,需准备安卓端Zerotier APK及电脑端Zerotier客户端。
二、Termux配置:开启SSH服务
Termux默认未安装SSH服务,需先在Termux中安装并配置openssh,操作均在Termux应用内完成:
1. 更新软件源并安装openssh
打开Termux后,先执行更新命令确保软件源最新,避免安装依赖冲突:
apt update && apt upgrade -y
命令中的“-y”参数表示自动确认所有安装提示,无需手动输入“y”确认。更新完成后,安装openssh:
apt install openssh -y
2. 查看Termux用户名
Termux默认用户名为随机字符串,先执行whoami命令查看当前默认用户名;
whoami
执行完成后,可以在控制台看到自己当前的用户名。
3. 启动SSH服务并设置密码
SSH服务需要密码验证(默认不允许空密码登录),所以首先要为当前用户设置密码:
passwd
执行命令后,会提示你输入新密码并确认,输入时密码不会显示,输完按回车即可,建议设置一个复杂度适中且容易记忆的密码。
密码设置完成后,启动SSH服务:
sshd
该命令无输出,无报错即表示SSH服务启动成功。Termux重启后SSH服务会停止,需重新执行“sshd”命令启动。
4. 获取安卓设备的IP地址
在Termux中执行ifconfig命令(若执行ifconfig提示“command not found”,需先安装net-tools):
~ $ ifconfig
Warning: cannot open /proc/net/dev (Permission denied). Limited output.
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
rmnet_data2: flags=65<UP,RUNNING> mtu 1432
inet 10.239.98.137 netmask 255.255.255.252
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
tun0: flags=81<UP,POINTOPOINT,RUNNING> mtu 2800
inet 192.168.193.67 netmask 255.255.255.0 destination 192.168.193.67
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.49.144.75 netmask 255.255.255.0 broadcast 10.49.144.255
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 3000 (UNSPEC)
~ $
上述命令输出了设备当前所有网络接口的信息,各项网络含义及对应IP用途说明如下:
-
lo(回环接口):本地回环网络,IP为127.0.0.1,仅用于设备内部程序间通信,无法用于SSH连接。
-
rmnet_data2(移动数据接口):手机开启移动数据时的网络接口,IP为10.239.98.137(示例),属于运营商内网IP,仅可用于移动数据环境下的远程连接(需配合公网穿透)。
-
tun0(虚拟隧道接口):此处为Zerotier创建的虚拟网络接口,IP为192.168.193.67(示例)。Zerotier在不同系统的实现方式有差异:在安卓系统中,需安装Zerotier APK并授予VPN权限,通过VPN模式创建该虚拟接口;在Linux系统(如Termux或电脑Linux)中,安装Zerotier客户端后会直接创建虚拟网络接口,无需依赖系统VPN框架,但本质均为构建虚拟局域网。该接口的IP属于虚拟局域网IP,可用于跨网络SSH连接。
-
wlan0(无线局域网接口):手机连接WiFi时的网络接口,IP为10.49.144.75(示例),即局域网IP,是同一WiFi环境下SSH连接的核心IP地址。
根据连接场景选择对应IP:局域网连接优先使用wlan0的IP;远程连接可使用rmnet_data2(移动数据)或tun0(Zerotier虚拟网)的IP。
三、电脑端连接
Windows、macOS、Linux系统的SSH连接核心命令一致,仅客户端启动方式略有差异,具体操作如下:
1. 客户端启动方式
-
Windows系统:打开PowerShell或Windterm(推荐,界面更直观);
-
macOS/Linux系统:打开系统自带终端或Windterm。
2. 统一连接命令与操作
在启动的客户端中执行以下命令,根据连接场景替换对应参数:
ssh 用户名@目标IP -p 8022
参数说明:
-
用户名:通过Termux中
whoami命令获取的用户名(如luka); -
目标IP:根据场景选择(局域网用wlan0的IP,Zerotier远程用tun0的虚拟IP);
-
-p 8022:指定Termux的SSH默认端口。
示例:
局域网连接(用户 : luka, 局域网 IP : 192.168.3.105):
ssh luka@192.168.3.105 -p 8022
Zerotier远程连接(用户 : luka,虚拟IP : * 192.168.193.67*):
ssh luka@192.168.193.67 -p 8022
通用验证步骤:
-
首次连接会提示“Are you sure you want to continue connecting (yes/no/[fingerprint])?”,输入“yes”并回车;
-
输入Termux中设置的用户密码(输入时无显示,输完回车);
-
连接成功之后会显示以下信息
Welcome to Termux!
Docs: https://termux.dev/docs
Donate: https://termux.dev/donate
Community: https://termux.dev/community
Working with packages:
- Search: pkg search <query>
- Install: pkg install <package>
- Upgrade: pkg upgrade
Subscribing to additional repositories:
- Root: pkg install root-repo
- X11: pkg install x11-repo
For fixing any repository issues,
try 'termux-change-repo' command.
Report issues at https://termux.dev/issues
~ $
四、SSH服务自启
1. SSH后台运行与自启配置
关闭Termux或断开会话后,SSH服务会默认终止。可通过Termux支持的tmux或nohup工具实现SSH后台运行:
以用tmux为例
tmux为终端复用工具,可创建独立会话,实现SSH服务在关闭Termux后持续运行,且支持断线重连。
# 1. 安装tmux(若未安装)
apt install tmux -y
# 2. 创建并进入命名为sshd的会话
tmux new -s sshd
# 3. 在tmux会话内启动SSH服务(默认监听8022端口)
sshd
执行上述命令后,按下组合键Ctrl + B,松开后按D(Detach),即可脱离会话并保持SSH后台运行。
后续管理命令:
-
重新连接会话:
tmux attach -t sshd -
查看所有会话:
tmux ls -
停止SSH服务:重新连接会话后按
Ctrl + C,或执行pkill sshd -
删除无用会话:
tmux kill-session -t sshd