SFTPGo + tmux tmux+ Docker Agent Docker Agent+ Socket.IO Socket.IO + SMB 3.1.1+ xterm-256color+ 自托管浏览器工作区+ SSH+ Tailscale SSH

在浏览器中自托管多用户 SSH 终端、SFTP/SMB 文件管理与运维诊断工作区

WebSSH 自身作为自托管服务,组合 SSH/tmux 提供持久终端,SFTP/SMB 做文件传输,Socket.IO 仅传控制事件

✓ 终端、文件、诊断、笔记集中在一个响应式工✓ 多窗格布局与 tmux 持久会话,手机到 ✕ SMB 默认禁用,需精确目标白名单且仅支✕ 不支持 SMB Guest/DFS/Ke

方案简介

WebSSH 是一个面向 homelab 和团队的安全、自托管 SSH 与 SFTP 工作区。它把终端会话、文件传输、命令、诊断和笔记集中在一个响应式浏览器工作区中,项目自述为自托管、多用户,且不依赖托管控制面或运行时 CDN。适合需要在浏览器中统一管理多台服务器 SSH 会话、跨 SFTP/SMB 源传文件、并查看 Linux 资源与 Docker 容器诊断信息的个人与团队。

亮点与能力

  • 多 SSH 会话,支持标签页和 1/2/4 窗格布局
  • 目标机有 tmux 时通过 tmux 保持远程 shell 持久化
  • 保存的连接、跳板机、密钥、密码,以及可选 Tailscale SSH 认证路径
  • 广播输入、终端搜索、transcript、重连控制、可配置回滚行数
  • 四种自托管 Nerd Font Mono 字体(JetBrains Mono、Hack、Fira Mono、Source Code Pro)的账号级外观设置
  • 会话感知的 Files、Commands、Diagnostics、Notes 上下文
  • 活动会话监控(Linux 资源与运行时数据)、扩展诊断(资源历史、进程、systemd 服务、Docker 容器)
  • 源优先的 SFTP 与可选 SMB 工作区,独立标签页与单/双文件窗格,支持上传、下载、预览、内联编辑
  • 跨 SFTP 与 SMB 源的服务器间传输,带进度、取消与显式冲突处理

组成与分工

  • SSH:核心远程终端通道,多会话、跳板机、密钥/密码认证,PTY 广播 xterm-256color
  • SFTP:源优先文件工作区,上传下载、内联编辑、服务器间传输
  • SMB:可选的第二个文件源(默认禁用),固定 TCP 445,要求 SMB 3.1.1、签名与加密
  • tmux:目标机上可用时用于持久化远程 shell 会话
  • Tailscale SSH:可选的替代认证路径
  • Socket.IO:仅用于控制事件与有界编辑器内容,批量传输走流式 HTTP
  • Docker:扩展诊断中可查看的容器运行时数据来源
  • Nerd Font Mono 字体族:自托管字体资产,为终端输出提供图标与一致几何

前置要求

  • 目标服务器需可 SSH 访问;若要会话持久化,目标机需安装 tmux
  • 若启用 SMB,需要支持 SMB 3.1.1、签名与加密的目标(如 Samba、TrueNAS),认证模式为 NTLM
  • WebSSH 提供官方容器镜像(GitHub Container Registry),可自托管部署
  • 远程应用需输出 UTF-8 并启用图标(例如 eza -l --icons)以获得完整终端图标体验

使用与配置要点

  • SMB 默认关闭(SMB_ENABLED=false);启用时必须提供精确的 SMB_ALLOWED_TARGETS 服务器白名单
  • Active Directory / TrueNAS 登录:优先用 DNS 域名(如 example.com)+ 账号名(如 alice);或域名留空使用 UPN(如 alice@example.com);NetBIOS 域名不一定被所有服务器接受
  • Samba 目标需配置 follow symlinks = no 和 wide links = no 以拒绝符号链接与宽链接穿越
  • 字体选择保存在账号外观设置中,无需字体枚举、外部字体服务或任意字体 URL
  • 终端图标依赖远程应用输出(如 eza -l --icons)、Neovim、Starship 等

注意事项与常见问题

  • SMB 凭据仅用于一次临时连接,密码与认证密钥不会被 WebSSH 存储;用户只能保存非密密的共享定义(显示名、host、share、domain、username)
  • 连接后 WebSSH 会非破坏性检查根目录列举、文件创建、目录创建、子项删除权限,但更深层 ACL 仍可能有差异
  • 上传与远程复制绝不静默覆盖已存在目标:替换、跳过或取消需显式选择;后端无法提供原子重命名时替换会失败关闭(fail closed)
  • 远程 wcwidth 表与复杂 emoji 序列仍可能有差异;本地字体在其他设备上可能不存在;自定义比例字体无法保证终端对齐,建议使用内置 Mono 字体族
  • 字体/间距变更会在 xterm 测量新单元格后调整远程 PTY 大小,PTY 继续广播 xterm-256color
  • 整体是两段信任边界:浏览器 TLS 保护浏览器到 WebSSH 一段

优缺点

  • ✓ 终端、文件、诊断、笔记集中在一个响应式工
  • ✓ 多窗格布局与 tmux 持久会话,手机到
  • ✕ SMB 默认禁用,需精确目标白名单且仅支
  • ✕ 不支持 SMB Guest/DFS/Ke

出处

本方案挖掘自开源项目 bifrost0x/webssh,方案内容与实施命令均来自其 README 原文。

方案出处
bifrost0x/webssh:Security-focused, self-hosted SSH and SFTP workspace for homelabs and teams - mu
302 star Security-focused, self-hosted SSH and SFTP workspace for homelabs and teams - multi-user, passkeys, OIDC, encrypted keys, backups, and offline-ready.

本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。