家里 Mac + Windows + NAS 混合环境想从外网安全访问?本文(上篇)讲 Tailscale 组网 + SSH 远程命令;(下篇)讲 RDP / VNC / SMB 图形和文件共享。
一、设备清单
| 设备 |
角色 |
需安装 |
| MacBook |
主力开发机 / 被控端 |
Tailscale + SSH / VNC |
| Windows PC |
辅助开发 / 被控端 |
Tailscale + RDP |
| NAS |
文件存储 / 被控端 |
Tailscale + SMB |
| 外网设备(手机/笔记本) |
控制端 |
Tailscale 客户端 |
二、4 种协议对比
| 协议 |
用途 |
平台 |
端口 |
| SSH |
命令行操作 |
Mac / Linux / Win PowerShell |
22 |
| RDP |
Windows 远程桌面 |
Windows(Win Pro 必要) |
3389 |
| VNC |
Mac 屏幕共享 |
Mac / Linux |
5900 |
| SMB |
文件共享访问 |
跨平台 |
445 |
Tailscale 把所有设备放进 100.x.x.x 虚拟内网,外网设备像在家一样访问,不需要公网 IP / 端口转发 / 动态 DNS。
三、Tailscale 基础安装
3.1 MacBook
1 2 3 4 5 6
| brew install tailscale
tailscale up
|
3.2 Windows
1 2 3 4 5
| winget install Tailscale.Tailscale
|
3.3 NAS(Synology / 群晖)
3.4 验证组网
每台设备上:
1 2 3 4
| tailscale status
tailscale ping macbook
|
四、SSH 远程命令(最常用)
4.1 启用 Mac 远程登录
1 2 3 4 5 6 7
|
sudo systemsetup -setremotelogin on
sudo systemsetup -getremotelogin
|
4.2 公私钥登录(推荐)
**MacBook(控制端)**生成密钥:
1 2 3
| ssh-keygen -t ed25519 -C "your.email@example.com"
|
**Mac(被控端)**添加公钥:
1 2 3 4 5
| ssh-copy-id user@100.x.x.x
cat ~/.ssh/id_ed25519.pub | ssh user@100.x.x.x "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
|
配置 SSH 客户端~/.ssh/config:
1 2 3 4 5 6 7 8 9 10
| Host mac-home HostName 100.x.x.x User yourname IdentityFile ~/.ssh/id_ed25519 ServerAliveInterval 60
Host nas HostName 100.y.y.y User admin Port 22
|
连接:
1 2 3 4 5 6
| ssh mac-home ssh nas
ssh mac-home "cd /Users/yourname/projects && ls"
|
4.3 公私钥登录 Windows
Windows OpenSSH Server(Win 10+ 自带):
1 2 3 4 5 6 7 8 9 10
| Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd Set-Service -Name sshd -StartupType Automatic
New-NetFirewallRule -Name sshd -DisplayName "OpenSSH Server" ` -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
|
Mac 控制端连 Windows:
1 2 3
| ssh yourname@100.z.z.z
|
把 Mac 的公钥拷到 Windows:
1 2 3 4
| mkdir $HOME\.ssh notepad $HOME\.ssh\authorized_keys
|
4.4 端口转发(高级)
1 2 3 4 5 6 7
| ssh -L 5000:localhost:5000 nas
ssh -R 8080:localhost:3000 mac-home
|
五、配置调优
5.1 Magic DNS(自动解析)
Tailscale 默认开启,每台设备都有自动域名:
1 2
| ssh mac-home.tail1234.ts.net
|
5.2 节点共享(多人共享)
在 Tailscale 管理后台 → Access Controls:
1 2 3 4 5 6 7 8 9 10 11 12 13
| { "acls": [ {"action": "accept", "src": ["*"], "dst": ["tag:server:22"]}, {"action": "accept", "src": ["group:family"], "dst": ["tag:server:*"]} ], "groups": { "group:family": ["user1@", "user2@"] }, "tagOwners": { "tag:server": ["autogroup:admin"] } }
|
5.3 Exit Node(远程流量出口)
1 2 3 4 5
| tailscale up --advertise-exit-node
tailscale set --exit-node=mac-home
|
这样在外网时所有流量从家里的 Mac 出去,绕过公司网络限制 + 保护隐私。
5.4 Subnet Router(访问整个家庭内网)
如果家里有 NAS、智能家居、打印机等 Tailscale 装不了的设备,可以让一台设备当 subnet router:
1 2 3 4 5
| tailscale up --advertise-routes=192.168.31.0/24
ssh 192.168.31.1
|
5.5 Funnel(公网暴露服务)
1 2 3
| tailscale funnel 80 on
|
不暴露 NAS web UI 给朋友,Funnel + ACL 限定 IP 段。
六、5 个常见错误排查
6.1 SSH 连接超时
1 2 3 4 5 6 7 8 9 10
| tailscale status ping 100.x.x.x
sudo lsof -iTCP:22 -sTCP:LISTEN
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
|
6.2 Permission denied (publickey)
1 2 3 4 5 6 7
| ssh -v mac-home
ssh mac-home "cat ~/.ssh/authorized_keys"
|
6.3 Tailscale 显示 offline
1 2 3 4 5 6
| sudo tailscale down && sudo tailscale up
sudo tailscale log
|
6.4 连接慢(>500ms)
1 2 3 4 5 6 7
| tailscale status
tailscale netcheck
|
6.5 SSH 频繁断连
1 2 3 4 5
|
Host * ServerAliveInterval 60 ServerAliveCountMax 3
|
下期预告
(下)篇讲图形与文件访问:RDP 远程 Windows 桌面 / VNC 远程 Mac 屏幕 / SMB 文件共享的完整配置 + 性能调优 + 故障排查。👉 (下):RDP / VNC / SMB 实战