在GPT5.5免费网页的帮助下建立了自己的免费远程AI开发环境搭建的过程记录,用了claude cli + vscode(非必须) + tmux + wsl2 + termius + Tailscale
使用 Claude Code + WSL2 + Tailscale + Termius 实现手机远程开发(完整踩坑实践)
本文记录我从零搭建 Claude Code + WSL2 + VSCode + Tailscale + Termius + tmux 的完整过程,以及过程中踩过的坑。
最终效果
电脑:
VSCode
↓
WSL2(Ubuntu)
↓
ljh
↓
tmux
↓
Claude Code
手机:
Termius
↓
SSH(Tailscale)
↓
Windows
↓
wsl
↓
ljh
↓
同一个 tmux
↓
同一个 Claude 会话
真正实现电脑、手机无缝切换。
一、环境
电脑:
- Windows 10
- WSL2 Ubuntu
- VSCode
- Claude Code CLI
- Tailscale
- OpenSSH Server
手机:
- Tailscale
- Termius(免费版)
二、Windows 开启 SSH
执行位置:Windows PowerShell(管理员)
查看:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*'
安装:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
启动:
Set-Service -Name sshd -StartupType Automatic
Start-Service sshd
验证:
Get-Service sshd
我的输出:
Status Name
------ ----
Running sshd
检查防火墙:
Get-NetFirewallRule -Name *SSH*
三、安装 Tailscale
电脑、手机安装 Tailscale,登录同一账号。
执行位置:Windows PowerShell
tailscale ip
我的输出:
100.76.143.60
fd7a:115c:a1e0::6435:8f3d
Termius 使用 100.xxx.xxx.xxx 即可连接。
四、第一次 SSH 登录踩坑
第一次:
ssh localhost
提示:
The authenticity of host 'localhost' can't be established.
输入 yes。
随后要求输入 Windows 登录密码。
踩坑:
我的电脑开机自动登录,没有 PIN,但实际上 Windows 账户仍然有密码。
SSH 登录使用的是 Windows 用户密码,不是 PIN,也不是微软账户验证码。
五、WSL 环境
开发环境全部放在 WSL。
以后:
- Python
- Node
- Claude Code
- Git
全部安装在 WSL。
六、安装 tmux
执行位置:WSL(Ubuntu)
sudo apt update
sudo apt install -y tmux
我的输出:
tmux is already the newest version (3.2a-4ubuntu0.2).
另外还遇到了:
ModuleNotFoundError: No module named 'apt_pkg'
这是 Ubuntu command-not-found 组件问题,与 tmux 无关,不影响使用。
七、为什么必须使用 tmux
没有 tmux:
Claude
↓
SSH断开
↓
Claude退出
有 tmux:
Claude
↓
tmux
↓
SSH断开
↓
Claude继续运行
八、统一启动器 dev
执行位置:WSL
创建:
mkdir -p ~/bin
code ~/bin/dev
内容:
#!/usr/bin/env bash
set -e
if [ $# -lt 1 ]; then
echo "Usage: dev <project>"
exit 1
fi
DIR="$HOME/$1"
[ -d "$DIR" ] || { echo "Project not found"; exit 1; }
SESSION=$(basename "$DIR")
cd "$DIR"
if tmux has-session -t "$SESSION" 2>/dev/null; then
exec tmux attach-session -t "$SESSION"
fi
tmux new-session -d -s "$SESSION" -c "$DIR"
tmux send-keys -t "$SESSION" "claude -c" C-m
exec tmux attach-session -t "$SESSION"
授权:
chmod +x ~/bin/dev
九、PATH
查看:
echo $PATH
我发现没有:
/home/exfeitu/bin
因此编辑:
code ~/.bashrc
追加:
export PATH="$HOME/bin:$PATH"
重新加载:
source ~/.bashrc
十、项目快捷命令
编辑:
code ~/.bash_aliases
例如:
alias ljh='dev LittleJobHelper'
以后电脑:
ljh
即可恢复开发环境。
十一、手机配置
Termius 新建 Snippet。
内容:
wsl
ljh
以后:
连接 HomePC
↓
Snippet
↓
ljh
自动:
- 进入 WSL
- 进入项目
- 恢复 tmux
- 恢复 Claude
十二、踩坑记录
1. SSH 登录失败
原因:
Windows SSH 登录需要 Windows 用户密码。
不是 PIN。
2. icacls 参数错误
执行:
icacls ...
提示:
无效参数“/grant:r”
最终发现并不是权限导致的问题。
实际上公钥已经正常生效。
3. authorized_keys
验证:
type $HOME\.ssh\authorized_keys
看到:
ssh-ed25519 AAAA......
即可。
4. 不要把 tmux attach 写进 .bashrc
最开始尝试:
tmux attach
写进 .bashrc。
结果:
VSCode 每开一个 Terminal:
都会自动进入 tmux。
非常影响正常开发。
最终放弃。
5. 不要使用 claude --resume
我当时执行:
claude --resume
结果一直卡住。
查看:
ps -ef | grep claude
输出:
tmux new -A -s claude
...
claude.exe -c
claude.exe --resume
说明实际上已经启动了多个 Claude。
真正应该恢复的是:
ljh
或者:
dev LittleJobHelper
不要直接启动第二个 Claude。
6. 查看 tmux
验证:
tmux ls
我的输出:
LittleJobHelper: 1 windows
claude: 1 windows
后来统一为:
项目名 = tmux Session 名。
例如:
LittleJobHelper
Paper
Blog
不再使用固定的 claude Session。
十三、最终工作流
电脑:
ljh
手机:
SSH
↓
Snippet
↓
ljh
两端进入同一个 tmux,同一个 Claude 会话。
总结
这套方案具有以下优点:
- 无需公网 IP
- 不需要端口映射
- 手机、电脑共享同一个 Claude
- SSH 断开任务不断
- 多项目互不影响
- 一个命令恢复开发环境
目前这是我体验最好的一套 Claude Code 移动开发方案。
浙公网安备 33010602011771号