如何远程当牛马——通过 Tailscale 实现远程连接 Win 和 WSL

AI-assisted

如何远程当牛马–通过Tailscale实现远程连接win和wsl

想必各位研究生都曾有过这样的经历,已经美美出去玩但是导师发消息要让你干活?

导师发消息了

不想挨骂和扣工资的你想到了远程办公,但是没有电脑怎么办?别急,只要你工位电脑上有Agent(比如codex或者claude code),就能够实现随时随地在工位。

从任意设备(电脑/手机)通过 Tailscale 内网,SSH 远程连接到工位电脑的 Windows 和 WSL Ubuntu 开发环境。

最终效果

目标 命令
连接 WSL ssh 用户名@<Tailscale IP> -p 端口1
连接 Windows ssh 用户名@<Tailscale IP> -p 端口2

最终效果

这样,就可以在任何情况下用claude指挥你的电脑啦,wsl用来vibe coding,win用来做ppt写文档干其他杂活,直接给牛马榨干。

前置条件

  • 工位电脑:Windows 10/11,已安装 WSL2 + Ubuntu,保持一直开机
  • 一个 Tailscale 账号

第一部分:Windows 配置

1.1 安装 Tailscale

  1. 下载:https://tailscale.com/download/windows
  2. 安装后登录你的 Tailscale 账号
  3. 记录分配的 Tailscale IP(如 100.80.195.92

Tailscale 安装后作为系统服务自动开机启动,无需额外配置。

1.2 配置 WSL mirrored networking

在 Windows 用户目录下创建或编辑 %USERPROFILE%\.wslconfig

1
2
3
4
5
6
[experimental]
autoMemoryReclaim=gradual
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

mirrored networking 让 WSL 和 Windows 共享网络栈,WSL 的端口直接对外暴露,无需 portproxy 转发。

1.3 安装 Windows OpenSSH Server

管理员 PowerShell:

1
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

1.4 配置 Windows sshd 端口

编辑 C:\ProgramData\ssh\sshd_config,修改端口(避免冲突,可以用自己喜欢的端口):

1
Port 2298

启动并设为开机自启:

1
2
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic

1.5 配置防火墙

管理员 PowerShell:

1
2
3
4
5
# 放行 WSL sshd 端口
netsh advfirewall firewall add rule name="WSL SSH 2299 Inbound" dir=in action=allow protocol=tcp localport=2299 profile=any

# 放行 Windows sshd 端口
netsh advfirewall firewall add rule name="Windows SSH 2298 Inbound" dir=in action=allow protocol=tcp localport=2298 profile=any

1.6 创建 WSL 自动启动任务

管理员 PowerShell:

1
2
3
4
$action = New-ScheduledTaskAction -Execute "wsl.exe" -Argument "-d Ubuntu -e /bin/bash -c 'sleep infinity'"
$trigger = New-ScheduledTaskTrigger -AtLogOn
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -ExecutionTimeLimit 0
Register-ScheduledTask -TaskName "WSL AutoStart" -Action $action -Trigger $trigger -Settings $settings -RunLevel Highest -Description "Keep WSL running for SSH access"

这确保 Windows 登录后 WSL 自动在后台运行,不需要手动打开终端。


第二部分:WSL Ubuntu 配置

2.1 安装 OpenSSH Server

1
2
sudo apt update
sudo apt install openssh-server -y

2.2 配置 sshd 端口

编辑 /etc/ssh/sshd_config

1
sudo sed -i 's/^#Port 22/Port 2299/' /etc/ssh/sshd_config

如果文件中已有 Port 行,直接改为:

1
Port 2299

使用 2299 而非默认 22 或 2222,避免与 Windows 侧端口冲突(mirrored networking 下共享端口空间)。

2.3 创建 systemd override

WSL 的 /run 是 tmpfs,每次重启会清空。sshd 需要 /run/sshd 目录,必须在启动前自动创建:

1
2
3
4
5
6
7
sudo mkdir -p /etc/systemd/system/ssh.service.d
sudo tee /etc/systemd/system/ssh.service.d/override.conf << 'EOF'
[Service]
ExecStartPre=/usr/bin/mkdir -p /run/sshd
Restart=on-failure
RestartSec=5
EOF

Restart=on-failure + RestartSec=5 确保即使首次启动时端口暂时被占,5 秒后自动重试。

2.4 启用并启动 sshd

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable ssh
sudo systemctl restart ssh

2.5 验证

1
sudo ss -tlnp | grep 2299

应看到:

1
2
LISTEN 0  128  0.0.0.0:2299  0.0.0.0:*  users:(("sshd",...))
LISTEN 0 128 [::]:2299 [::]:* users:(("sshd",...))

第三部分:客户端配置(其他电脑/手机)

3.1 安装 Tailscale

登录与工位机相同的 Tailscale 账号。

3.2 SSH 客户端

  • 电脑:系统自带 ssh 命令即可
  • iOS:推荐 Termius 或 Blink Shell
  • Android:推荐 Termius 或 JuiceSSH

3.3 连接测试

1
2
3
4
5
# 连接 WSL
ssh 用户名@<Tailscale IP> -p 2299

# 连接 Windows
ssh 用户名@<Tailscale IP> -p 2298

3.4 配置 SSH 快捷连接(可选)

在客户端 ~/.ssh/config 中添加:

1
2
3
4
5
6
7
8
9
Host wsl
HostName <Tailscale IP>
Port 2299
User 用户名

Host win
HostName <Tailscale IP>
Port 2298
User 用户名

之后直接:

1
2
ssh wsl    # 进入 WSL Linux 环境
ssh win # 进入 Windows PowerShell 环境


常见问题

Q: 连接超时?

  1. 确认客户端 Tailscale 已连接(状态为 Connected)
  2. 确认工位机 Tailscale 在线:客户端执行 tailscale ping <工位IP>
  3. 确认 WSL 已启动:工位机执行 wsl -l --running
  4. 确认 sshd 在运行:WSL 内执行 sudo ss -tlnp | grep 2299

Q: sshd 启动失败?

1
2
sudo systemctl status ssh
sudo journalctl -xeu ssh.service --no-pager -n 20

常见原因:

  • /run/sshd 不存在 → override 没生效,重新执行 2.3 步骤
  • 端口被占用 → 换一个端口(修改 sshd_config 里的 Port)

Q: 从自己机器 SSH 到自己的 Tailscale IP 超时?

这是正常的(hairpin routing 限制)。用 127.0.0.1 做本地测试:

1
2
ssh 用户名@127.0.0.1 -p 2299   # 测试 WSL
ssh 用户名@127.0.0.1 -p 2298 # 测试 Windows

Q: WSL 重启后 sshd 没自动启动?

确认任务计划存在:

1
Get-ScheduledTask -TaskName "WSL AutoStart"

如果不存在,重新执行 1.6 步骤。

如何远程当牛马——通过 Tailscale 实现远程连接 Win 和 WSL

https://www.t51n9hua.fun/2026/06/09/SSH_Remote_Setup_Guide/

作者

Elpam

发布于

2026-06-09

更新于

2026-06-09

许可协议

You need to set install_url to use ShareThis. Please set it in _config.yml.

评论

You forgot to set the shortname for Disqus. Please set it in _config.yml.