使用tailscale+ssh配置mac-wsl远程工作流

  • 先说使用场景:最近通过国补+教育优惠入了一台m4的macbookair,这样就是随身带一个mac,同时宿舍里放了一台台式机,为了能够方便的跑一些基本的深度学习demo配置了wsl。另一方面,我的mac是256g的,这样用来开发很担心长期的内存占用问题,于是乎就想到了远程使用wsl来进行开发,但是使用一般的远程方案对电量消耗很大,显然不够合适,在朋友的建议下选择直接配一个ssh来使用mac操作wsl,具体步骤和遇到的问题如下,可供参考:
  • 首先,我在网上找了一些方案,但是大多都是直接在局域网内进行配置,但是我的场景并不适配,实验室连校园网,但是宿舍区是连不到的,于是想到把需求丢给deepseek让他来筛选一些方案,给出了两种方案,一种是使用zerotier搭建虚拟局域网+虚拟机直连,另一种是使用windows进行端口转发
  • 考虑到便捷性,我选用了第一种方案,即使用zerotier搭建虚拟局域网,但是安装完zerotier后突然想起来以前为了配置远程云游戏方案使用了tailscale,那就找一个使用tailscale来搭建虚拟局域网的方案,这里主要介绍使用tailscale实现目标的过程以及遇到的问题

使用 Tailscale 替代 ZeroTier 的配置方案

Tailscale 是基于 WireGuard 的零配置 VPN 工具,相比 ZeroTier 更轻量、穿透能力更强,且支持自动 NAT 打洞。以下是具体实现步骤:


方案优势

  1. 无需手动分配 IP:Tailscale 自动为设备分配 100.x.y.z 的私有 IP,且支持 MagicDNS(通过设备名直接访问,如 hostname.tailscale.net)。
  2. 更简单的子网路由:可直接将 Windows 主机和 WSL2 同时加入 Tailscale 网络,或通过子网路由暴露整个局域网。
  3. 开箱即用的密钥管理:自动轮换密钥,安全性更高。

配置步骤

1. 在 Windows 主机上安装 Tailscale
  1. 下载安装包
    Tailscale Windows 客户端
  2. 登录并激活: 
    • 安装后打开 Tailscale,点击登录,选择你的账号(支持 Google/Microsoft/GitHub 等第三方登录),我选择的google。
    • 首次使用需访问 Tailscale 管理后台 授权新设备。

2. 在 WSL2 Ubuntu 中安装 Tailscale
  1. 安装 Tailscale 客户端: 
# 进入 WSL2 终端
curl -fsSL https://tailscale.com/install.sh | sh
  1. 启动并登录 Tailscale: 
sudo tailscale up
    • 复制弹出的链接到浏览器完成登录授权(需同一 Tailscale 账号)。
  • 在这一步中遇到了这样的问题
failed to connect to local tailscaled; it doesn't appear to be running (sudo systemctl start tailscaled ?)
  • 原因如下
    • WSL2 默认禁用 systemd,无法通过 systemctl 管理服务(包括 tailscaled)。
    • 直接运行 sudo tailscale up 时,可能因服务未启动而失败。
  • 解决方案:启用 WSL2 的 systemd(长期有效)

启用 WSL2 的 systemd 支持:

  1. 编辑 WSL2 配置
sudo nano /etc/wsl.conf

添加以下内容:

[boot]
systemd = true
  1. 重启 WSL2
# 在 Windows PowerShell 中执行
wsl --shutdown
wsl -d Ubuntu  # 替换为你的发行版名称
  1. 启动 tailscaled 并设置自启
sudo systemctl start tailscaled
sudo systemctl enable tailscaled

  • 验证 tailscaled 状态
  • 检查服务是否运行
ps aux | grep tailscaled
    • 若有 tailscaled --state=/var/lib/tailscale/tailscaled.state 进程,则表明成功。
  • 登录 Tailscale 并测试连接
sudo tailscale up

  • 故障排查
  1. 端口冲突
    检查是否有其他进程占用 41641 端口(Tailscale 默认端口):
sudo lsof -i :41641
  1. 防火墙拦截: 
    • 在 WSL2 中临时关闭防火墙测试:
sudo ufw disable
    • 在 Windows 防火墙中放行 Tailscale 相关规则。
  1. 日志分析
    查看 Tailscale 日志定位具体错误:
journalctl -u tailscaled


3. 验证设备连接
  • 查看设备列表
    登录 Tailscale 管理后台,确认 Windows 主机和 WSL2 Ubuntu 均已在线,并记录其 Tailscale IP(如 100.x.y.z)。
  • 测试连通性: 
    • 在 WSL2 中 ping Windows 主机的 Tailscale IP: 
ping 100.x.y.z  # Windows 的 Tailscale IP
    • 在 Windows 中 ping WSL2 的 Tailscale IP: 
ping 100.a.b.c  # WSL2 的 Tailscale IP

4. 在 MacBook 安装 Tailscale
brew install tailscale
sudo tailscale up
    • 遇到brew命令未安装问题,安装过程如下:
      • 手动下载安装脚本
        1. 使用命令下载即使换用国内的镜像依旧无法访问,于是选择直接访问 install.sh 脚本,保存到本地。
        2. 在终端中运行:
#其中/path/to是你安装脚本的路径
/bin/bash /path/to/install.sh
      • 如果脚本没有执行权限(需先赋予权限):
chmod +x /path/to/install.sh  # 添加可执行权限
5.wsl开启ssh服务

按照以下步骤操作:

配置 WSL2 的 SSH 服务
  1. 安装 SSH 服务器
    确保 WSL2 内已安装 OpenSSH Server:
sudo apt update && sudo apt install openssh-server
  1. 启动 SSH 服务
    手动启动服务并设置开机自启(WSL2 需配置自动启动):
sudo service ssh start
    • 开机自启配置(可选):
      在 WSL2 的 ~/.bashrc 末尾添加:
if [ -z "$(ps -ef | grep sshd | grep -v grep)" ]; then
    sudo service ssh start
fi
  1. 允许防火墙通过 SSH
    WSL2 默认无防火墙限制,但若使用 ufw,需放行端口:
sudo ufw allow 22

6. 在 MacBook 上连接 WSL2
  1. 获取 WSL2 的 Tailscale IP
    在 WSL2 中运行 tailscale ip 查看其 Tailscale IP。
  2. 通过 SSH 连接
    在 MacBook 终端使用 WSL2 的 Tailscale IP 连接:
ssh <WSL2用户名>@<WSL2-Tailscale-IP>

方案优势

  • 直接访问:MacBook 通过 Tailscale IP 直达 WSL2,无需 Windows 端口转发。
  • 安全性:Tailscale 自动加密流量,无需暴露公网 IP。
  • 跨网络支持:无论宿舍和办公网络是否在同一个局域网,均可直接连接。

通过此方案,你可以无缝从 MacBook SSH 到宿舍的 WSL2 环境。

SSH 连接命令: 

    • 连接 Windows 主机: 
ssh windows_username@100.x.y.z  # Windows 的 Tailscale IP
    • 直接连接 WSL2 Ubuntu: 
ssh ubuntu_username@100.a.b.c    # WSL2 的 Tailscale IP
    • 使用 MagicDNS(更便捷): 
ssh ubuntu_username@<wsl2-hostname>.tailscale.net

高级配置(可选)

配置 WSL2 服务开机自启(笔者未设置)

由于 WSL2 依赖 Windows 宿主机的启动,需配置自启动脚本:

  1. 在 Windows 中创建启动脚本(如 start_wsl_tailscale.ps1): 
# 启动 WSL2 并自动运行 Tailscale
wsl -d Ubuntu -u root /usr/bin/tailscale up --accept-routes
  1. 将脚本加入计划任务: 
    • 按 Win+R 输入 taskschd.msc,创建新任务: 
      • 触发器:At system startup
      • 操作:启动 PowerShell,参数 -File "C:\path\to\start_wsl_tailscale.ps1"
      • 勾选 Run with highest privileges

方案对比:Tailscale vs ZeroTier

特性

Tailscale

ZeroTier

协议基础

WireGuard(更高效)

自研协议(兼容性广)

配置复杂度

零配置,自动 NAT 穿透

需手动管理网络和 IP 分配

DNS 支持

内置 MagicDNS(设备名直连)

需手动配置 DNS 或 IP

子网路由

一键式广告子网

需手动配置路由表

安全性

自动密钥轮换,ACL 策略

依赖手动管理


故障排查

  1. Tailscale 无法连接: 
    • 检查设备是否在线:tailscale status
    • 重启服务:sudo systemctl restart tailscaled(WSL2)或 Windows 服务中重启 Tailscale。
  1. SSH 连接超时: 
    • 确认防火墙放行 SSH 端口(WSL2 的 ufw 或 Windows 防火墙)。 
    • 测试基础连通性:ping 100.x.y.z
  1. WSL2 服务未自启: 
    • 检查计划任务是否配置正确,确保脚本路径无空格或特殊字符。 
    • 手动执行脚本验证:powershell -File "C:\path\to\script.ps1"

  • 笔者所有配置皆是根据deepseek给出的参考进行配置,如果遇到其他问题,推荐通过详细描述相关问题给到大模型推理进行解决。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值