把一台安卓旧手机变成"随身 Linux",电脑通过 SSH 免密登录 Termux,当作常开的小服务器或终端玩具机。

核心链路

电脑 ssh → 手机 Termux 的 sshd(默认端口 8022)→ 安卓本地 shell。

电脑(任意终端) ──SSH:8022──> Termux(sshd) ──> Android Linux 环境

手机端准备(Termux 里执行)

pkg install -y openssh   # 安装 SSH 服务端
passwd                    # 设置登录密码(备用)
sshd                      # 启动服务端,监听 8022
whoami                    # 记下用户名(形如 u0_aXXX)
ip addr show wlan0        # 查手机 IP(wlan0 的 inet 那行)

电脑端免密登录

  1. 电脑生成密钥:ssh-keygen -t ed25519(已有可跳过)
  2. 把电脑公钥写入手机 ~/.ssh/authorized_keys,权限必须 600
  3. 连接:ssh -p 8022 用户名@手机IP

踩坑记录

  1. authorized_keys 粘贴丢空格:手机终端复制长命令,极易把 ssh-ed25519 与密钥之间的空格吞掉 → 报 Permission denied。
    解法:用双变量拼接,从源头避免丢空格:

    KEY1='ssh-ed25519'
    KEY2='密钥串'
    printf '%s %s\n' "$KEY1" "$KEY2" > ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
  2. 手机"全局代理"不覆盖 Termux:Clash/v2ray 的系统代理模式只对部分 app 生效,Termux 终端进程不读它 → pkg update 全 error。
    解法:让手机走电脑的代理(电脑端代理若只绑 127.0.0.1,手机够不着;需绑 0.0.0.0):

    export http_proxy=http://电脑IP:7897
    export https_proxy=http://电脑IP:7897
  3. IP 是 DHCP 动态的:连不上先查新 IP(ip addr show wlan0)。
  4. 重启后 sshd 没了:Termux 无开机自启,安卓后台会杀进程。需要 termux-boot + termux-wakelock。
  5. 主机指纹变化:报 host key 验证失败时 ssh-keygen -R '[IP]:8022' 清掉旧指纹。
  6. ss 命令在 Termux 可能不存在:检测端口用 timeout 2 bash -c "echo > /dev/tcp/127.0.0.1/端口" 更稳。
  7. pgrep -f/pkill -f 易误杀 SSH 通道:命令行含关键字时会把承载 SSH 的 bash 也匹配上,慎用。

玩法

  • 终端玩具:cmatrix、cowsay、figlet、sl、hollywood
  • 小游戏(需真终端):nethack、bsdgames、tty-solitaire
  • 当常驻小服务器:跑 web server、bot、定时脚本,手机当"个人云"

相关


本文归档于个人知识库 · 领域:CS & AI · 模块:04 Project_CS_AI/Network