TSLinkTSLink 文档

文件共享

如何通过 tailnet 暴露目录进行文件共享

查看 Markdown

概述

TSLink 可以在你的 Tailscale 网络上通过 HTTPS 提供任何本地目录的服务。这对于与团队成员或你自己的设备共享文档、构建产物、媒体文件或任何文件集合非常有用。

共享目录

使用 tslink add 和 --dir 标志:

bash
tslink add <名称> --dir <路径>

示例:

bash
# 共享文档文件夹
tslink add docs --dir ~/Documents/shared

# 共享构建输出
tslink add builds --dir /var/www/builds

# 共享项目的公共资源
tslink add assets --dir ~/projects/my-app/public

访问共享文件

add 默认确保网关运行。完成必要授权,再运行 tslink url docs --wait,从 tailnet 策略允许的设备打开准确返回 URL:

代码
https://docs.<你的-tailnet>.ts.net

TSLink 在根 URL 提供文件列表页面。你可以通过浏览器浏览目录并直接下载文件。

URL 路径

文件在该文件服务的根 URL 提供:

代码
https://docs.<你的-tailnet>.ts.net/

需要共享多个目录时,请使用不同的服务名。

使用场景

团队文件共享

与团队共享项目资源,无需上传到云存储:

bash
tslink add team-resources --dir ~/team/resources
tslink url team-resources --wait

完成授权并取得准确 URL 后,策略允许的 tailnet 成员可以浏览和下载文件。

开发产物

与同事共享构建产物或测试报告:

bash
tslink add test-reports --dir ./coverage
tslink add builds --dir ./dist

媒体库

让本地媒体库可在你的设备间访问:

bash
tslink add media --dir /Volumes/External/media

从手机、平板或 tailnet 上的任何其他设备访问你的文件。

临时共享

需要快速共享文件?添加目录,分享链接,完成后移除:

bash
# 开始共享
tslink add temp --dir ~/Desktop/send-these

# 完成后
tslink remove temp

受限共享

将文件访问限制为特定用户或带标签的设备。--allow 标志支持邮箱地址和 ACL 标签,可以指定多个值:

bash
# 单个用户
tslink add confidential --dir ~/Documents/private --allow user@company.com

# 多个身份
tslink add confidential --dir ~/Documents/private --allow user@company.com,tag:admin

# 结合标签进行基于 ACL 的访问控制
tslink add team-docs --dir ~/team/docs --allow tag:engineering --tags tag:internal

只有指定的身份才能访问共享目录。未授权的请求会收到 403 Forbidden 响应。

临时节点共享

使用 --ephemeral 请求临时节点。控制面按不活跃状态清理;停止网关不证明远端设备已消失,本地 registry 条目保留至主动移除。可用于一次性文件传输或短期共享会话:

bash
# 请求临时节点;远端清理结果须另行验证
tslink add temp-share --dir ~/Desktop/handoff --ephemeral

# 结合临时节点和访问控制进行安全的一次性共享
tslink add handoff --dir ~/Desktop/deliverables --ephemeral --allow colleague@company.com

多目录共享

可以将多个目录作为独立服务共享,每个服务有自己的主机名和访问控制:

bash
tslink add public-docs --dir ~/Documents/public
tslink add team-files --dir ~/team/shared --allow tag:engineering
tslink add build-output --dir ./dist --ephemeral

重要说明

  • 目录路径必须存在于运行 TSLink 的机器上。
  • 位于 TSLink config 目录内、等于该目录或包含该目录的分享路径会以 path_exposes_config_dir 拒绝,保护凭据及 node keys。
  • 文件以只读方式提供——远程用户可以下载但不能上传或修改文件。
  • 目录通过 HTTPS 提供服务,使用自动 TLS 证书。
  • 默认情况下,所有访问仅限于你的 Tailscale 网络——文件永远不会暴露到公共互联网。Funnel 仅支持 proxy,并且必须使用 --funnel --public。
  • 子目录会被递归提供服务。
  • Funnel(--funnel --public)不适用于文件服务——仅支持代理服务,且属于显式公共暴露。

人员与期限

文件服务也支持带期限的人员授权。只给实际 Tailscale 登录账户开放指定私有文件应用;外部账户需要接受应用设备邀请。撤销阻止新请求,无法收回已下载文件或关闭已接受的流。文件服务不能使用公共 Funnel。

目录