# 多设备并网打通Macmini 与Windows!Tailscale + SSH 小白详细教程+踩坑实录
**作者**: 我真的没有拼多多
**日期**: 2026-03-26T06:06:46.000Z
**来源**: [https://x.com/nopinduoduo/status/2038085442877395330](https://x.com/nopinduoduo/status/2038085442877395330)
---

适用人群:完全小白,零基础也能懂
目标:让多台设备(Windows、macOS、Linux)通过 Tailscale 组网,实现双向 SSH 免密访问
工具:Claude Code + 命令行
预计时间:30 分钟(首次),5 分钟(熟练后)
——————
多设备并网打通Macmini 与Windows!
Tailscale + SSH 让我拥有了"分布式大脑"
前段时间新买了Mac mini,让小龙虾从之前的VPS住了进来。
但发现一个很严重的问题:设备隔离孤岛状态 + 数据分散
使用了一段时间后,发现一个很严重问题:
数据很多存放在了我的ThinkPad主力机上,两台设备是"孤岛"状态,只能通过 Obsidian + git 同步的方案,变相的进行着一些数据同步的工作。
这样我的Mac mini只能沦为小龙虾的部署机器,完全没办法发挥多设备的优势了。
## 真正想要实现的效果

在朋友@YuLin807的建议下,我尝试了这套方案:Tailscale + SSH 组网 实现分布式大脑。
其实整个方案很简单,就这几步:
所有设备安装 Tailscale → 自动组网
配置 SSH 免密登录 → 一键互相访问
前两天发了一个帖子,反响剧烈,评论区很多人是想要教程的。
今天这篇文章,详细写一下整个的踩坑过程,以及对Tailscale和SSH的简单介绍和理解,完全小白向教程。
————————————
## 什么是 Tailscale + SSH?(必读!)
## 小白友好的解释
类比理解:
- Tailscale = 就像给所有设备拉了一根"虚拟网线",让它们在同一个"虚拟房间"里
- SSH = 就像"远程控制",让你在一台设备上操作另一台设备
- 免密登录 = 就像给家里的门装了"人脸识别",不用带钥匙也能进
## 为什么要这样做?
传统方式的问题:
- ❌ 家里设备不在同一局域网(如公司电脑无法直接连家里的电脑)
- ❌ 每次连远程都要输密码(麻烦且不安全)
- ❌ 没有公网 IP(运营商不提供,很难远程访问)
Tailscale + SSH 的优势:
- ✅ 穿透内网:在任何地方都能连家里的设备(咖啡厅、公司、出差)
- ✅ 免密登录:配置一次,永久生效
- ✅ 端到端加密:比很多 VPN 更安全
- ✅ 跨平台:Windows、Mac、Linux、手机都能互联
- ✅ 免费且简单:个人使用完全免费,只需安装登录
## 快速检查清单
开始前确保:
- [ ] 所有设备都已安装 Tailscale 并登录同一账号
- [ ] 了解如何使用 Claude Code 执行命令(或会打开终端)
- [ ] 有设备的管理员权限(Windows 知道管理员密码,Mac 知道开机密码)
- [ ] 所有设备都已开启 Tailscale(状态显示为 "Online")
## 第零步:安装 Tailscale(首次必看)
目标:在所有设备上安装并登录 Tailscale,让它们加入同一个虚拟网络。
## 为什么要安装?
Tailscale 是什么?
- 基于 WireGuard 的零配置 VPN 工具
- 自动 NAT 穿透,无需公网 IP
- 端到端加密,安全性极高
- 跨平台支持:Windows、macOS、Linux、Android、iOS、路由器、NAS
官方地址:
- 官网:https://tailscale.com/
- 下载页:https://tailscale.com/download/
## 各平台安装指南
## Windows
下载安装:
访问 https://tailscale.com/download/windows
下载 .exe 安装包
双击安装,一路"下一步"
登录账号:
安装完成后会自动弹出登录页面
选择登录方式(推荐使用 Google/GitHub/邮箱)
授权登录
验证成功:
- 系统托盘会出现 Tailscale 图标
- 图标显示为绿色 = 已连接
- 图标显示为灰色 = 未连接
手动启动(如果没自动启动):
## macOS
下载安装:
访问 https://tailscale.com/download/macos
下载 .dmg 文件
打开 dmg,拖拽 Tailscale 到 Applications 文件夹
打开 Tailscale.app
登录账号:
首次打开会弹出登录页面
选择登录方式(Google/GitHub/邮箱)
授权登录
授权系统扩展(首次会提示):
系统会提示"系统扩展已阻止"
点击"打开安全设置"
点击"允许"按钮
重启 Mac(如果需要)
验证成功:
- 菜单栏会出现 Tailscale 图标
- 图标显示为绿色 = 已连接
## Linux (Ubuntu/Debian)
安装命令:
登录流程:
执行 sudo tailscale up 后会显示一个链接
复制链接到浏览器打开
授权登录
回到终端,等待显示"Success"
验证成功:
## 路由器(OpenWrt)
OpenWrt:
## iOS/Android
iOS:
App Store 搜索"Tailscale"
安装并打开
登录账号
Android:
Google Play 搜索"Tailscale"
安装并打开
授权 VPN 权限(必须)
登录账号
验证成功:
- App 显示"Connected"状态
- 显示分配的 Tailscale IP 地址
## 第一次连接(验证组网成功)
步骤 1:在第一台设备上安装并登录
安装完成后,Tailscale 会自动给这台设备分配一个 100.x.x.x 的内网 IP 地址。
查看本机的 Tailscale IP:
输出示例:
步骤 2:在第二台设备上安装并登录
使用相同的账号登录!
步骤 3:验证两台设备已连通
方法 1:Ping 测试
方法 2:访问共享文件(Windows)
方法 3:访问共享文件(Mac)
方法 4:查看设备列表
成功标志:
- ✅ Ping 通了
- ✅ 能访问共享文件(如果开启了共享)
- ✅ tailscale status 能看到多台设备
## 常见安装问题
问题 1:Windows 提示"系统扩展被阻止"
解决:
按 Win + R,输入 sysdm.cpl,回车
切换到"硬件"选项卡
点击"设备安装设置"
选择"是(自动安装驱动程序)"
重启电脑
问题 2:macOS 提示"无法验证开发者"
解决:
问题 3:Linux 提示"tailscale: command not found"
解决:
问题 4:设备显示"Offline"状态
原因:设备未连接到互联网或 Tailscale 服务未运行
解决:
问题 5:多台设备登录了不同账号
症状:tailscale status 只能看到一台设备
解决:
在所有设备上退出登录
使用同一个账号重新登录
验证:tailscale status 能看到所有设备
## 安装完成检查清单
完成以下检查,确认所有设备都正确安装:
- [ ] 所有设备都已安装 Tailscale
- [ ] 所有设备使用同一账号登录
- [ ] 所有设备显示"Connected"或"Online"状态
- [ ] 任意设备 ping 其他设备都能通
- [ ] tailscale status 能看到所有设备列表
✅ 全部通过? 恭喜,Tailscale 组网成功!继续下一步。
## 第一步:确认 Tailscale 组网
目标:确认所有设备都在同一个 Tailscale 网络中,并记录每台设备的信息。
## 1.1 在所有设备上查看 Tailscale 状态
Windows / PowerShell:
macOS / Linux:
正常输出示例:
关键点:
- 如果看到多台设备列表 → Tailscale 组网成功 ✅
- 如果只看到一台 → 检查其他设备是否登录同一账号
- IP 地址格式:100.x.x.x(Tailscale 专用 IP 段)
## 1.2 记录设备信息(非常重要!)
为什么需要记录?
- SSH 连接需要知道:目标设备的 IP + 用户名
- 用户名 ≠ Tailscale 账号名(是设备本地的用户名)
创建一个设备清单(示例):

⚠️ 常见误区:
- ❌ 错误:用户名 = Tailscale 账号邮箱
- ✅ 正确:用户名 = 设备本地登录名(如 qyc、Qyc、root)
获取用户名命令:
💡 小技巧:把设备清单存到手机备忘录或 Obsidian,以后随时查看
## 第一步完成检查
如果能 ping 通(有回复) → Tailscale 组网成功,继续下一步 ✅
如果 ping 不通 → 检查 Tailscale 是否登录同一账号
## 第二步:生成 SSH 密钥对
目标:在每台设备上生成"钥匙"和"锁",让设备之间互相认识。
## 什么是 SSH 密钥对?(小白必读)
类比理解:
- 公钥(Public Key) = 你家的"门锁",可以公开给别人
- 私钥(Private Key) = 你家的"钥匙",必须保密,只能自己保管
- authorized_keys = 就像一个"访客名单",里面存了所有被允许进入的人的公钥
工作原理:
设备 A 生成密钥对(钥匙 A + 锁 A)
把"锁 A"放到设备 B 的"访客名单"里
以后设备 A 想连设备 B,就拿出"钥匙 A",设备 B 检查名单 → 允许进入
## 2.1 检查是否已有密钥
在所有设备上执行:
输出示例(如果已存在):
如果已存在:跳过生成步骤,直接用现有密钥
如果不存在(或提示找不到文件):继续执行下一步
## 2.2 生成新密钥
在需要生成密钥的设备上执行:
示例:
执行后会看到(示例交互):
→ 直接按回车(使用默认路径)
→ 直接按回车(不设置密码,否则每次连接还是要输入)
→ 直接按回车(确认不设置密码)
成功后会看到:
## 2.3 验证密钥生成
查看公钥内容(后面会用到):
输出示例:
⚠️ 重要提示:
- 私钥(id_ed25519):绝对不能分享给别人!就像家门钥匙
- 公钥(id_ed25519.pub):可以公开,就是要复制到其他设备的
## 第二步完成检查
如果看到两个文件(id_ed25519 和 id_ed25519.pub)→ 密钥生成成功 ✅
## 第三步:配置免密登录
目标:把每台设备的"公钥"放到其他设备的"访客名单"里,实现免密登录。
## 核心理解(最重要!)
公钥存储位置差异(新手最容易踩坑):

⚠️ Windows 的坑:
- ❌ 错误:Windows 公钥也在 ~/.ssh/authorized_keys
- ✅ 正确:Windows 公钥在 C:\ProgramData\ssh\administrators_authorized_keys(系统级)
- 而且需要特殊权限和重启 SSH 服务
## 工作流程图(帮助理解)
## 3.1 场景一:macOS/Linux → macOS/Linux(最简单)
假设场景:
- 设备 A(你的 Mac):100.80.153.60,用户名 qyc
- 设备 B(你的服务器):100.94.2.125,用户名 root
目标:从 Mac 免密登录服务器
在设备 A(Mac)上执行:
第一次会提示:
→ 输入 yes(第一次连接该设备,需要确认)
然后提示输入密码:
→ 输入目标设备(服务器)的密码
成功输出:
✅ 配置完成!之后测试:
如果不需要输入密码 → 成功!
## 3.2 场景二:macOS/Linux → Windows(易错)
假设场景:
- 你的 Mac:100.80.153.60,用户名 qyc
- 你的 Windows:100.91.53.84,用户名 Qyc
目标:从 Mac 免密登录 Windows
## 方法 1:使用 ssh-copy-id(推荐,最简单)
在 Mac 上执行:
输入 Windows 密码后,会自动处理:
- 创建目录
- 写入公钥到正确位置
- 设置权限
## 方法 2:手动复制(如果 ssh-copy-id 失败)
步骤 1:在 Mac 上获取公钥
复制输出的内容(类似):
步骤 2:在 Windows 上操作(需要管理员 PowerShell)
打开管理员 PowerShell:
- 按 Win + X,选择"终端(管理员)"或"Windows PowerShell(管理员)"
执行以下命令:
✅ 验证:
## 3.3 场景三:Windows → macOS/Linux
假设场景:
- 你的 Windows:100.91.53.84,用户名 Qyc
- 你的 Mac:100.80.153.60,用户名 qyc
目标:从 Windows 免密登录 Mac
在 Windows 上执行:
第一次会提示:
→ 输入 yes
然后输入 Mac 的密码:
✅ 验证:
## 3.4 场景四:Windows → Windows
假设场景:
- Windows A(笔记本):100.91.53.84
- Windows B(台式机):100.92.54.85
步骤 1:在源 Windows (A) 上获取公钥
复制公钥内容
步骤 2:在目标 Windows (B) 上操作(管理员 PowerShell)
✅ 验证:
## 3.5 实战案例:我的设备配置
假设你有三台设备:
- 笔记本(Windows):100.91.53.84,用户 Qyc
- Mac mini:100.80.153.60,用户 qyc
- 服务器:100.94.2.125,用户 root
目标:任意设备都能免密访问其他设备
## 配置矩阵

批量操作脚本(可选):
在每台设备上创建一个 setup-ssh.sh(或 .ps1)脚本,一次性配置所有目标。
## 第三步完成检查
在每台设备上验证能否连接其他设备:
期望输出(不需要输入密码):
如果所有组合都能免密连接 → 配置完成 ✅
## 3.1 场景一:macOS/Linux → macOS/Linux
假设:设备 A (100.x.x.1) 要免密登录设备 B (100.x.x.2)
在设备 A 上执行:
输入一次密码后永久生效
## 3.2 场景二:macOS/Linux → Windows
假设:Mac (100.80.153.60) 要免密登录 Windows (100.91.53.84)
方法 1:使用 ssh-copy-id(推荐)
方法 2:手动复制(如果 ssh-copy-id 失败)
在 Mac 上获取公钥:
在 Windows 上(管理员 PowerShell):
## 3.3 场景三:Windows → macOS/Linux
在 Windows 上执行:
输入一次密码后永久生效
## 3.4 场景四:Windows → Windows
在源 Windows 上获取公钥:
在目标 Windows 上(管理员 PowerShell):
## 第四步:验证免密登录
目标:确保所有配置都生效,设备之间可以免密互通。
## 4.1 快速批量测试(推荐)
创建测试脚本(在任意设备上):
执行测试:
期望输出:
## 4.2 单个设备测试
基础连接测试:
成功输出:免密成功
失败输出:Permission denied (publickey,password)
实际登录测试:
期望输出(不需要输入密码):
交互式登录测试:
成功标志:直接进入目标设备的 Shell,不需要输入密码
## 4.3 Windows PowerShell 测试脚本
在 Windows 上创建 test-ssh.ps1:
执行测试:
## 4.4 双向测试(验证所有设备互通)
目标:确保设备 A ↔ 设备 B 双向都能免密连接
测试矩阵(手动执行或写脚本):

示例测试命令(在笔记本上执行):
## 第四步完成检查
验证清单:
- [ ] 所有设备都能单向访问其他设备
- [ ] 所有设备都能双向互通(A→B 和 B→A 都行)
- [ ] 连接时不需要输入任何密码
- [ ] 执行远程命令能正常返回结果
全部通过? → 恭喜,配置完成!🎉
有失败? → 查看故障排查章节
## 第五步:(可选)自动化密码输入
适用场景:
- 使用 Claude Code 等 AI 工具,无法手动输入密码
- 需要批量配置多台设备
## 方法 1:使用 expect(macOS/Linux)
安装 expect:
自动化脚本:
使用示例:
## 方法 2:使用 sshpass(跨平台)
安装 sshpass:
使用示例:
⚠️ 安全提示:
- 密码会以明文形式出现在命令历史中
- 仅用于一次性配置,配置完成后删除脚本
- 生产环境不推荐
## 方法 3:管道传递(适用于 Windows → Linux/Mac)
在 Windows 上执行:
或使用 PowerShell 的凭据管理器(更安全):
## 第五步完成检查
验证自动化脚本是否生效:
成功输出:自动化配置成功
## 故障排查速查表
遇到问题?90% 的问题都在这里能找到答案。
## 快速诊断流程(按顺序排查)
## 问题 1:Permission denied (publickey,password)
症状:
原因分析:
- 公钥未正确添加到目标设备
- 公钥路径错误(Windows 最常见)
- 权限设置不正确
排查步骤:
步骤 1:确认公钥在目标设备上
步骤 2:确认公钥内容完整
步骤 3:检查权限(见下文"权限问题")
## 问题 2:Windows 免密失败
症状:
- Windows 上始终要求输入密码
- 或提示"Access denied"
最常见原因:公钥路径错误!
Windows 的正确路径(记住!):
❌ 错误路径(Linux/macOS 的路径):
解决方法:
## 问题 3:权限设置不正确
症状:
- Authentication refused: bad ownership or modes
- 或其他权限相关错误
macOS/Linux 权限修复:
Windows 权限修复:
## 问题 4:No route to host
症状:
原因:Tailscale 连接断开或设备离线
排查步骤:
步骤 1:检查 Tailscale 状态
期望输出:能看到目标设备列表
如果看不到:
- 检查目标设备是否在线
- 确认目标设备登录了同一 Tailscale 账号
- 在 Tailscale 管理后台检查设备状态
步骤 2:测试网络连通性
步骤 3:检查 Tailscale 是否启用
## 问题 5:Connection refused
症状:
原因:SSH 服务未启动
解决方案:
Windows:
macOS:
Linux:
## 问题 6:Windows 写入公钥失败
症状:
原因:权限不足
解决方法:
确保使用管理员 PowerShell右键开始菜单 → "终端(管理员)"
或按 Win + X → "Windows PowerShell(管理员)"
如果仍然失败,手动创建文件:
## 问题 7:第一次连接提示"Are you sure you want to continue?"
症状:
这不是错误! 正常现象。
解决方法:
或在命令中自动确认:
⚠️ 安全提示:
- 首次连接应手动验证指纹
- 仅在可信网络使用 StrictHostKeyChecking=no
## 问题 8:配置成功后突然又需要密码
症状:
- 之前免密成功,突然又要求输入密码
可能原因:
重新生成了密钥(旧密钥失效)
目标设备重装了系统
authorized_keys 文件被清空
解决方法:
## 问题 9:Verbose 模式调试(终极武器)
如果以上方法都无效,使用详细日志模式:
会输出大量调试信息,找到关键错误:
- debug1: Offering public key: ...
- debug1: Authentications that can continue: ...
- Permission denied (publickey,password)
关键信息位置:
- 找 Offering public key → 确认是否发送了正确的密钥
- 找 Authentication refused → 查看具体拒绝原因
## 故障排查总结表

💡 记住:
90% 的问题都是公钥位置或权限问题
Windows 最容易出错(路径和权限都特殊)
使用 -vvv 可以看到详细错误信息
## Windows 常见问题
检查 SSH 服务状态:
如果未运行:
检查公钥文件权限:
修复权限:
## macOS/Linux 常见问题
检查 SSH 权限:
修复权限:
## 快速配置模板(复制粘贴用)
## 模板 A:两台 macOS/Linux 互连
## 模板 B:Mac → Windows
## 模板 C:Windows → Mac
## 验证清单
完成后测试:
## 进阶配置(可选)
## 配置 SSH 别名(懒人必备)
为什么需要?
- 不用记复杂的 IP 和用户名
- 一条命令直达设备
- 可以设置更多高级选项
编辑 SSH 配置文件:
配置示例:
使用示例:
高级选项:
## 禁用密码登录(提升安全性)
⚠️ 警告:
- 确保免密登录100% 可用后再执行
- 否则可能把自己锁在外面
macOS/Linux:
Windows:
验证:
## 批量执行命令(运维神器)
场景:同时在多台设备上执行相同命令
创建脚本 run-on-all.sh:
使用示例:
## 文件快速传输(比 SCP 更方便)
使用 rsync 同步文件:
使用 SCP 传输单个文件:
## 保持连接不断开
问题:长时间不操作,SSH 连接会断开
解决方法:
客户端配置(推荐):
或临时使用:
## 多台设备跳跃(Jump Host)
场景:需要通过设备 A 访问设备 B
配置示例:
使用:
## 安全最佳实践
## 1. 密钥管理
✅ 好的习惯:
- 为不同设备/用途使用不同密钥
- 给密钥设置描述性名称(如 id_ed25519_mac)
- 定期轮换密钥(敏感环境)
❌ 避免的做法:
- 不要用同一密钥对注册所有服务
- 不要把私钥上传到云端(除非加密)
- 不要在多台设备间共享私钥
## 2. 权限控制
限制特定用户 SSH 访问:
限制 root 远程登录:
## 3. 审计日志
查看 SSH 登录历史:
## 4. 备份配置
备份 SSH 配置和密钥:
加密备份(敏感环境):
## 总结
## 核心流程回顾
## 核心要点(必须记住)

## 常见误区(新手必看)

## 快速命令参考卡
复制保存,随时查看:
## 常见问题(FAQ)
## Q1: Tailscale 免费吗?
A: 个人使用完全免费!
- 免费版支持:100 台设备、所有核心功能
- 付费版:更多高级功能(如 SSO、ACL 等)
## Q2: 安全性如何?
A: 非常安全:
- 端到端加密:所有流量都经过加密
- 密钥认证:比密码更安全
- 零信任网络:只有在授权列表中的设备才能连接
- 开源可审计:Tailscale 的 WireGuard 协议是开源的
## Q3: 能在手机上用吗?
A: 可以!
- iOS/Android 都有 Tailscale 官方 App
- 配合 Termius 等终端 App,可以在手机上 SSH 到家里的设备
## Q4: 需要公网 IP 吗?
A: 不需要!
- Tailscale 使用 NAT 穿透技术
- 即使在咖啡厅的公共 WiFi,也能连家里的设备
## Q5: 设备离线后怎么办?
A:
- 设备离线时无法连接(正常)
- 重新上线后 Tailscale 会自动重新连接
- 可以在管理后台查看设备在线状态
## Q6: 能连接别人的设备吗?
A: 可以,两种方式:
接受邀请:对方在 Tailscale 后台邀请你加入网络
共享网络:使用 Tailscale 的"网络共享"功能
## Q7: 速度如何?
A: 取决于多种因素:
- 两端设备的网络速度
- 中间经过的 NAT 转发次数
- 一般体验:本地局域网速度,外地访问取决于双方宽带
## Q8: 支持端口转发吗?
A: 支持!
- Tailscale 可以转发任意端口
- 例如:访问家里的 NAS、摄像头、Web 服务等
## 进阶学习资源
官方文档:
- Tailscale 官方文档
- SSH 官方文档
推荐阅读:
- Tailscale 的 ACL(访问控制列表)配置
- SSH 密钥管理最佳实践
- WireGuard 协议原理(Tailscale 底层技术)
社区资源:
- r/Tailscale subreddit
- Tailscale GitHub Discussions
- SSH 教程(推荐 DigitalOcean 的教程)
## 最后的话
> "技术不是目的,自由才是。"
这套配置能带给你:
- ✅ 随时随地访问家里的设备
- ✅ 不再受物理位置限制
- ✅ 真正的数字自由
下一步建议:
先完成基础配置(30 分钟)
验证免密登录成功
探索进阶功能(别名、脚本等)
分享给你的朋友
记住:
- 遇到问题先看"故障排查"部分
- 90% 的问题都是公钥位置或权限问题
- 实在不行,用 -vvv 查看详细日志
教程版本:v1.1
最后更新:2026-03-26
作者:Kevin (多多) @nopinduoduo
问题反馈:查看故障排查速查表
## 祝你配置顺利!有问题随时查故障排查部分。 🚀
## 相关链接
- [我真的没有拼多多](https://x.com/nopinduoduo)
- [@nopinduoduo](https://x.com/nopinduoduo)
- [11K](https://x.com/nopinduoduo/status/2038085442877395330/analytics)
- [@YuLin807](https://x.com/YuLin807)
- [Mar 26](https://x.com/nopinduoduo/status/2037048594847719524)
- [@YuLin807](https://x.com/YuLin807)
- [44K](https://x.com/nopinduoduo/status/2037048594847719524/analytics)
- [https://tailscale.com/](https://tailscale.com/)
- [https://tailscale.com/download/](https://tailscale.com/download/)
- [https://tailscale.com/download/windows](https://tailscale.com/download/windows)
- [https://tailscale.com/download/macos](https://tailscale.com/download/macos)
- [Tailscale.app](https://tailscale.app/)
- [setup-ssh.sh](https://setup-ssh.sh/)
- [run-on-all.sh](https://run-on-all.sh/)
- [Tailscale 官方文档](https://tailscale.com/kb/)
- [SSH 官方文档](https://www.ssh.com/academy/ssh)
- [@nopinduoduo](https://x.com/@nopinduoduo)
- [Upgrade to Premium](https://x.com/i/premium_sign_up)
- [10:46 AM · Mar 29, 2026](https://x.com/nopinduoduo/status/2038085442877395330)
- [11.6K Views](https://x.com/nopinduoduo/status/2038085442877395330/analytics)
- [View quotes](https://x.com/nopinduoduo/status/2038085442877395330/quotes)
---
*导出时间: 2026/3/29 15:32:48*