Skip to content

常见问题

浏览器兼容性

TSH 支持哪些浏览器?

TSH 需要 Chrome 86+Edge 86+。推荐使用最新版本的 Chrome 或 Edge。

Firefox 和 Safari 暂不支持,因为 TSH 依赖的 File System Access API 仅在 Chromium 内核浏览器中可用。

为什么打开后提示授权文件夹?

TSH 通过 File System Access API 操作本地文件,需要用户主动授权一个文件夹作为工作目录。这是浏览器的安全机制,TSH 无法自动获取文件访问权限。

授权后能访问其他文件夹吗?

不能。TSH 只能访问你授权的文件夹及其子目录。如需访问其他位置,重新授权即可。

文件操作

为什么 cp 复制目录报错?

复制目录必须加 -r 参数:

bash
cp -r sourcedir/ destdir/

不加 -r 会报 omitting directory 错误。

mv 移动目录需要 -r 吗?

不需要。mv 直接支持目录移动,无需额外参数:

bash
mv dir1/ dir2/

为什么大文件读取失败?

TSH 对超过 50MB 的文件做了保护限制,防止浏览器内存溢出。建议使用专业工具处理大文件。

文件保存后内容没变?

确保编辑器退出前执行了保存操作:

  • Vim: :wq 保存退出
  • Nano: Ctrl+O 保存,Ctrl+X 退出

保存后可用 cat 命令验证内容。

本地终端桥接

连接本地终端失败?

  1. 确认 PowerShell 命令中的 Token 与网页一致
  2. 确认在同一台机器上执行命令
  3. 检查端口是否被占用
  4. 浏览器会自动重试 60 秒,请耐心等待

连接后无法输入?

  • 点击终端区域确保获得焦点
  • 确认连接模态框已关闭
  • 尝试按回车键激活输入

本地终端安全吗?

安全。桥接脚本仅监听 127.0.0.1,外部网络无法访问。每次连接生成唯一随机 Token 防止 CSRF。数据仅在浏览器和本地之间传输。

插件

插件安装后重启会丢失吗?

不会。插件映射存储在 localStorage 中,页面刷新后自动恢复。但插件代码缓存在内存中,刷新后需要重新下载。

从外部 URL 安装插件报 "Failed to fetch"?

TSH 通过内置 /proxy 端点代理外部 URL,自动处理 CORS。如果仍然失败,检查:

  1. URL 是否正确可访问
  2. 目标服务器是否在线
  3. 尝试用 curl 验证 URL

如何开发自己的插件?

参考 插件 API 参考示例插件。插件是纯 JS 代码,无需打包工具。

SSH 连接

浏览器直连报 "Connection lost before handshake"?

  1. 确认目标服务器 SSH 服务正常运行:ssh user@host -p port
  2. 确认目标地址是公网 IP 或域名(浏览器直连不支持内网地址)
  3. 检查防火墙是否放行 SSH 端口
  4. 尝试切换为本地中继模式

密码认证失败?

  1. 确认用户名和密码正确
  2. 检查服务器端 SSH 配置是否允许密码认证:
    bash
    grep PasswordAuthentication /etc/ssh/sshd_config
    # 应为 yes
  3. 尝试使用 SSH 密钥认证代替密码

私钥粘贴后连接失败?

  1. 确认私钥格式完整(含 -----BEGIN-----END 行)
  2. 确认私钥未被加密(有密码保护的私钥暂不支持)
  3. 确认公钥已添加到服务器的 ~/.ssh/authorized_keys
  4. 检查服务器端权限:
    bash
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys

本地中继脚本无法连接?

  1. 确认目标 SSH 服务器可达:
    bash
    ssh user@host -p port
  2. 确认本地系统已安装 SSH 客户端:
    • Windows: 系统自带 OpenSSH Client
    • Linux: 通常已预装
    • macOS: 系统自带
  3. 检查端口是否被占用,尝试更换端口
  4. 确认防火墙未阻止本地端口

PowerShell 中继脚本报错?

本地中继脚本兼容 Windows PowerShell 5.1 和 PowerShell 7+。如果报错:

  1. 确认 PowerShell 版本:$PSVersionTable.PSVersion
  2. 确认执行策略允许脚本运行(脚本通过 irm...|iex 远程执行,不依赖本地策略)
  3. 如果报 [System.Threading.Thread]::new() 错误,请使用 PowerShell 5.1 或 7+

SFTP 打开后一直显示 "Connecting SFTP"?

  1. 直连模式:SFTP 复用 SSH 通道,确认 SSH 连接正常
  2. 中继模式:确认本地脚本已启动 SFTP 监听端口(SSH_P+1
  3. 检查浏览器控制台是否有错误信息
  4. 尝试关闭 SFTP 面板后重新打开

TSH 脚本

TSH 脚本兼容本地 EXE 吗?

兼容。TSH 脚本语言设计为同时兼容 CF 版本和本地 EXE 版本。同一份 .tsh 脚本可在两个环境中运行。

脚本中如何使用变量插值?

使用 ${变量名} 语法:

bash
var name = "TSH"
echo "Hello, ${name}!"

脚本中如何执行命令并获取输出?

使用反引号命令替换:

bash
var files = `ls`
echo "Files: ${files}"

部署

Cloudflare Worker 免费额度够用吗?

够用。Cloudflare Workers 免费计划每天 100,000 次请求,对个人使用完全足够。TSH 是纯前端应用,Worker 仅负责静态文件服务。

可以部署到其他平台吗?

可以。TSH 本质上是静态文件 + 一个 Worker 脚本。你可以:

  • 用任意静态服务器托管 public/ 目录
  • node local-dev.js 本地运行
  • 部署到 Vercel、Netlify 等平台

详细方案参考 部署指南

如何更新 TSH?

bash
git pull
cd cf-worker
node build-worker.js

然后重新部署 Worker。浏览器端刷新即可获取最新版本。

基于 MIT 许可证发布