[返回项目介绍](../README.md) # 使用与配置 面向 DeepSeek Harness 的远端工作插件。它把 SSH 会话管理、浏览器终端、FTP/FTPS/SFTP 文件传输、代理、端口转发和 AI 会话授权放在同一个 DSH 工作区里。 浏览器 UI、服务端运行时、会话授权边界和终端生命周期的职责说明见 [ARCHITECTURE.md](../ARCHITECTURE.md)。 ## 安装 本地目录路径栏的“打开文件管理器”复用 DSH 原生能力,打开的是 **DSH 运行所在电脑** 的当前会话目录,不是远程浏览器所在电脑。Docker 或无桌面环境不支持时会显示说明;SSH/FTP 远端目录仍在插件内浏览,不会传给本机文件管理器。目录弹窗支持原有文件操作和预览;完整文件名支持鼠标悬停和键盘聚焦查看。 ```bash dsh plugin --profile web add @lemoncat7/dsh-ssh@latest ``` 安装或升级后重启对应的 DSH Profile。桌面端与 Docker 部署使用相同的插件包。 ## 能力 - SSH 密码、私钥和 SSH Agent 认证 - HTTP CONNECT、SOCKS5 和 SSH 跳板代理 - 本地转发(`-L`)、远程转发(`-R`)和动态 SOCKS5 转发(`-D`) - 浏览器交互终端,支持输入、增量输出、窗口尺寸同步和主动断开 - 当前会话右侧栏支持多个 AI 终端切换与键盘输入 - SSH 活动右栏在当前页面生命周期内按会话分别保持展开状态、页签、所选主机、浏览目录、预览和滚动位置;切换到未展开过的会话时不会自动打开,切回原会话会恢复 - AI 调用 `ssh_terminal_open` 创建终端时,当前会话会自动展开 SSH 右栏并切换到新终端 - SFTP 文件浏览、文本/图片/PDF 预览和流式下载;支持拖放上传、目录内移动、行末删除,并可从内嵌预览打开独立放大窗口 - 文件预览使用组合刷新控件:左侧立即刷新,右侧“手动 / 自动”切换模式,默认手动;自动模式每 5 秒检查大小和修改时间,有变化才读取。文本/Markdown/HTML 刷新保留滚动位置,网络失败保留旧内容,隐藏时暂停自动检查,关闭预览取消请求。仅凭大小和时间无法识别保留这两项元数据的修改,此时可手动刷新。PDF 仅手动刷新,浏览器内置阅读器可能重置页码。 - HTML/HTM 文件支持静态页面预览及源码切换。页面在禁用脚本、导航和表单能力的沙箱中显示,并通过 CSP 阻止外部资源请求;支持内联样式和 data 图片,不加载相邻 CSS/图片文件,不运行 JavaScript。大文件仍遵循 1 MB 预览限制,下载可获得原文件。 - Markdown 手动刷新模式下可直接在正文编辑,使用“保存”或 Ctrl/Cmd + S 写回原文件;自动刷新模式只读。HTML 不支持编辑。未保存时禁止刷新及切换自动模式,离开时提示;草稿保存在当前浏览器标签页(不可用时退回内存),可下载或确认放弃。 - 编辑限完整 UTF-8 `.md` 文件、最大 256 KB。前置元数据、嵌入 HTML、引用定义等暂不能安全往返转换的文档只读;普通标题、列表、表格等会以标准 Markdown 重新序列化,排版语法可能规范化。 - 保存核对内容哈希并在临时文件写完后复核版本,不一致时保留草稿且拒绝覆盖;本地限制在会话工作区,SFTP 需服务器支持 OpenSSH 原子替换扩展。保留文件权限及所有者;无法安全替换时失败,不采用先删除原文件的回退方案。外部进程不参与文件锁,最终复核与替换之间仍存在极短的并发窗口。 - 独立「文件传输」工作区,支持 2~4 个 FTP、FTPS 或 SFTP 窗格与多个任务页 - FTP、显式 FTPS、隐式 FTPS;FTP 控制连接与每条被动数据连接统一支持 HTTP CONNECT 和 SOCKS5 代理 - FTP/FTPS/SFTP 跨协议流式互传,不把完整文件暂存到 DSH 磁盘;支持多文件、递归目录、冲突策略、进度、取消和失败状态 - 有序多主机跳板链,兼容已有单跳板配置 - 独立密钥库集中保存常用用户名、密码和私钥,SSH 连接仅保存引用 - 独立代理库集中保存 HTTP CONNECT 与 SOCKS5 代理,多台主机可复用同一连接路径 - 按 DSH 会话授权连接;未勾选的主机对 AI 完全不可见 - 普通分叉会话继承来源会话的 SSH、文件端点、权限和固定目录;运行中的终端与传输任务仍归原会话所有,子代理不会隐式继承用户授权 - 保存固定远端项目目录,并从目录直接创建和打开新 DSH 会话 - AI 可执行一次性命令,或打开、读取、操作和关闭独立的交互终端 - 左侧远端区域提供右侧栏开关;目录页使用真实 SFTP 浏览远端文件,终端页使用单一终端画面观察并操作 AI 终端 - 插件服务与 Web 客户端兼容 Windows、macOS 和 Linux,不依赖本机 `ssh` 或 `sftp` 命令 - 首次连接主机指纹确认、输出上限、命令超时和公开端口绑定保护 - GitHub Gist 跨设备配置同步,支持智能、本地优先和云端优先策略;主机、FTP/FTPS、项目目录、代理库、密钥库及其凭据均端到端加密 ## 界面 侧栏入口名为「远端」,通过官方 `sidebar.footer.action` 注册。浏览器兼容层只把这个入口锚定到官方 Workspace 区域上方;它不会替换 `sidebar.workspaces`,锚点失效时会自动留在官方 Footer。远端标题右侧按钮与折叠栏图标负责开关 SSH 右侧栏;展开后的第一项「SSH 面板」进入完整管理工作区,它下面只显示当前 DSH 会话已授权的 SSH 连接。点击其中一台主机会打开右侧栏并直接切换到该远端。切换到其他会话会自动退出管理工作区,也可以使用工作区左上角的返回按钮。 管理工作区分成两部分: 1. 左侧远端树:点击主机只负责选中并展开固定目录,同时自动收起其他主机;右侧独立的「挂载 / 卸载」按钮决定当前 DSH 会话能否访问该主机,因此浏览终端不会意外改变 AI 权限。点击目录整行即可固定,再次点击已固定目录即可取消;同一主机支持挂载多个固定目录,并单独选择默认工作目录。目录后的新增按钮直接创建并打开新会话。底部统一设置「仅命令 / 终端控制」与执行前确认。 2. 右侧工作区:默认把终端与当前主机或项目目录的 SFTP 左右并排展示,不需要在两个页面之间切换;SFTP 会等终端首次连接成功后再读取远端目录。拖动两栏之间的分隔线可以调整 SFTP 宽度,双击恢复默认,比例会保存在当前浏览器。另可进入端口转发、密钥库、代理库和设置。SFTP 支持浏览、预览、下载、行末删除,以及拖放或文件选择器触发的多文件顺序上传;文件拖进同一主机的目录时使用原生重命名完成移动,跨端点拖放才创建复制任务,拖回原目录不会产生任务。同名文件逐项确认跳过或覆盖,单文件上限为 512 MB。内嵌文件预览可通过下载旁的放大按钮打开独立预览窗口。 「文件传输」是独立工作区页签。每个任务页默认双窗格,可切换为 2~4 栏。每个窗格先显示统一的 SFTP、FTP、FTPS 连接列表,单击连接后才读取远端目录,并可随时返回连接列表。名称、大小和修改时间表头均可切换升降序,目录始终置顶。每个文件或目录行末在悬停或键盘聚焦时显示“下载到本地”和删除两个快捷按钮;文件直接流式下载,目录则实时归档为 `.tar`,两者都使用独立协议连接,不占用当前目录的浏览会话,也不会在 DSH 磁盘暂存完整内容。文件可拖到另一窗格或具体目录;传输操作和异常处理通过弹窗选择目标及处理方式。同一端点内拖入目录是移动,跨端点拖放是复制;目录不能移动到自身或子目录。浏览窗格复用自己的协议会话,传输任务使用独立连接,避免大文件占用目录浏览的控制通道;任务卡在执行时显示累计耗时,结束后固定显示总耗时和完成时刻。任务完成、失败或取消后只刷新对应目标目录,及时呈现完整或部分写入结果。每个文件或目录行末均可直接打开删除确认,目录采用有深度和数量上限的递归删除,且不会跟随符号链接。关闭页面不会中断服务端任务;DSH 进程停止时会统一取消并释放两端连接。 工作区使用插件内职责单一的自适应壳布局。宽容器使用双栏;窄于 820px 时远端树切换为左侧抽屉,窄于 520px 时进一步压缩 SFTP 次要信息和操作密度。响应式判断使用容器查询,因此手机、桌面分屏和 DSH 窄面板采用同一套行为。 SSH 插件不会向聊天标题栏添加按钮。右侧栏统一从左侧「远端」区域打开;当前会话尚未授权主机时会显示引导。仅执行命令权限显示 SFTP 目录;终端控制权限同时显示 SFTP 目录和 AI 终端。多个终端通过紧凑标签切换,运行中的终端支持键盘输入。进入 SFTP 子目录时,该目录会同步成为后续 `ssh_exec` 与新终端的工作目录。 右侧栏的本地/远端目录和主机 SFTP 浏览器共用路径输入:输入目录并按 Enter 进入,输入文件路径并按 Enter 直接预览。支持绝对路径、相对当前目录的文件名,以及远端 `~/` 路径;文件名包含空格或没有扩展名也能识别。打开文件不会修改会话工作目录,返回时保留原浏览目录。路径不存在或无权访问时保留输入并显示错误;本地路径仍不能越出当前会话工作区。 新建和编辑连接的表单内提供「测试连接」。测试直接使用尚未保存的表单内容,可验证密钥库凭据、HTTP/SOCKS5 代理和有序跳板链;首次连接的主机指纹也在表单内确认。测试过程不会临时创建 Profile,也不会把凭据写入配置文件。 ## AI 工具 从 1.14.0 起,对模型只注册 **`ssh`** 一个入口。下面的名称是内部操作名,不再是独立的宿主工具。先 `ssh({"action":"list"})` 查看当前会话允许的操作,再 `ssh({"action":"describe","tool":"ssh_exec"})` 获取参数,最后调用: ```json {"action":"call","tool":"ssh_exec","arguments":{"profileId":"实际已授权主机 ID","command":"pwd"}} ``` 发现和说明不授予权限;每次执行仍验证所属会话、主机、文件端点及终端/任务所有权,命令与文件传输审批保持原设置。临时授权同样从此入口查询和执行。已有对话提到旧工具名时,将其放入 `tool` 字段,不要直接调用。自定义 Agent 工具白名单若写死旧名称,需改为 `ssh`;这是工具接口变化,而非自动扩展会话权限。 | 操作 | 用途 | | --- | --- | | `ssh_list` | 只列出当前 DSH 会话已授权的连接 | | `ssh_set_cwd` | 设置并验证当前会话在指定主机上的工作目录 | | `ssh_exec` | 执行一次性远端命令 | | `ssh_terminal_open` | 打开当前 Agent 独占的 SSH 终端 | | `ssh_terminal_send` | 向终端发送文本并等待输出稳定 | | `ssh_terminal_read` | 分页读取终端回滚缓冲区 | | `ssh_terminal_signal` | 写入 Ctrl-C / Ctrl-\\ / Ctrl-Z 终端控制字符 | | `ssh_terminal_close` | 关闭终端 | | `ssh_forward_list` | 列出已授权连接的转发规则 | | `ssh_forward_start` | 启动已有转发规则 | | `ssh_forward_stop` | 停止已有转发规则 | | `file_endpoint_list` | 只列出当前 DSH 会话明确授权的 FTP/FTPS/SFTP 端点 | | `file_directory_list` | 浏览已授权端点中的远端目录 | | `file_download_to_local` | 下载授权端点的文件到当前 DSH 会话目录,完成后返回实际保存路径 | | `file_transfer_start` | 启动端点之间的异步流式文件或目录传输 | | `file_transfer_status` | 查询当前会话拥有的传输任务进度 | | `file_transfer_cancel` | 取消当前会话拥有的传输任务 | 工具始终从 `exec.agent.session.id` 解析会话授权关系。SSH 命令权限与文件权限独立:文件端点必须单独授权,并选择“仅浏览”或“允许跨端传输”。模型不能通过参数绕过授权,也不能枚举其他 DSH 会话的主机、文件端点、终端或传输任务。覆盖目标文件不会被默认推断;`file_transfer_start` 默认使用 `fail` 冲突策略。文件浏览和端点间传输必须优先使用 `file_*` 工具,不允许通过 SSH 临时启动 HTTP 服务、开放端口或使用终端编码传输。若用户要求下载到浏览器本地,模型会直接提示在「SSH → 文件传输」选择文件并点击“下载到本地”。 `file_download_to_local` 默认以原文件名保存到 `exec.agent.session.header.cwd`,即 DSH 当前会话目录,不是浏览器所在电脑的下载目录。可选 `localPath` 只能填写该目录内的相对文件路径,父目录须已存在;同名文件一律拒绝覆盖。此工具需要文件端点的传输权限,并沿用文件传输审批设置。支持 FTP、FTPS、SFTP 的普通文件,单文件最大 512 MiB、超时 5 分钟、最多同时下载两个文件;流式写入私有临时文件,完成后以排他方式提交正式文件,返回真实 `localPath` 和字节数。正常取消、断线或权限撤销会清理临时文件,不把部分内容作为成功结果。进程被强制终止时可能留下 `.dsh-download-*` 临时目录,但不会把它当成完整交付;重新调用可重试。目录下载仍使用浏览器入口或端点间传输工具。 「执行前确认」依赖 DSH 当前会话的审批策略:Workspace Write 的 Ask 策略会显示确认;Full Access 使用 Never 策略,不显示确认,并会直接拒绝被 SSH 插件标记为需要审批的操作。若希望在 Full Access 下直接执行 SSH,请关闭该开关。 ### 终端中断与挂起 `ssh_terminal_signal` 支持 `SIGINT`(Ctrl-C)、`SIGQUIT`(Ctrl-\\)和 `SIGTSTP`(Ctrl-Z)。它将控制字符写入当前终端,由远端 PTY 行规程或前台 应用处理,返回 `inputWritten: true`,不代表已经确认 POSIX 信号投递。 原始模式或自定义 `stty` 控制字符可能改变其行为。 不支持 `SIGTERM` / `SIGKILL` / `SIGHUP`:SSH channel signal 不保证作用于 前台作业,甚至可能杀掉会话 shell。关闭终端请用 `ssh_terminal_close`。 宿主要求返回真实 `targetPgid` 的后端接口在无法验证远端前台进程组时明确报错, 不再返回伪造的 `{ delivered: true, targetPgid: 0 }`。取消发送使用 Ctrl-C 输入路径。 ## 凭据与安全 普通连接资料保存在 `statePath` 指定的原子 JSON 文件中。以下敏感字段只写入 DSH `ctx.credentials` 的 `dsh-ssh/` Grant Record: - SSH 密码 - 私钥 - 私钥口令 - 代理密码 - FTP 密码 密钥库条目使用独立的 `dsh-ssh-vault/` Grant Record。SSH Profile 只保存 `credentialId`,不会复制或读回密钥库中的明文。仍被连接引用的密钥库条目不能删除。 代理库条目保存在状态文件中,代理密码使用独立的 `dsh-ssh-proxy/` Grant Record。SSH Profile 选择常用代理后只保存 `proxyId`;仍被主机引用的代理不能删除。原有内联 HTTP/SOCKS5 配置继续兼容。 FTP Profile 与 SSH Profile 分开保存。FTP Profile 自有密码使用 `dsh-ftp/` Grant Record,也可以引用已有的密码型密钥库条目。普通 FTP 会在界面中明确标记为未加密;FTPS 默认校验证书。FTP 仅使用被动模式,且忽略 PASV 响应中用于改变目标主机的地址,避免 FTP Bounce/SSRF。 管理 API 和 Web UI只返回是否配置以及字段名,不返回任何凭据值。默认拒绝非回环地址的端口监听;若确实需要监听 `0.0.0.0`,必须在「远端 → 设置」中显式开启。 首次连接会拒绝未知主机密钥并展示 SHA-256 指纹。用户确认后才把指纹写入 Profile,后续连接严格比对。 ## GitHub Gist 配置同步 所有同步选项都位于「远端 → SSH 面板 → 设置」。默认使用 GitHub OAuth Device Flow:点击“连接 GitHub”后,插件先在 DSH 内显示一次性设备代码和复制按钮,用户再从同一授权窗口打开 GitHub 官方设备授权页并粘贴代码;access token 由服务端直接写入 DSH 凭据服务,不经过浏览器,也不会出现在同步状态文件中。Personal Access Token 仅保留在“高级授权设置”中作为备用。 Device Flow 需要一个属于插件发布者的 GitHub OAuth App Client ID。Client ID 本身不是密钥,可公开分发;Client Secret 不得写入插件,而且此流程不需要 Client Secret。首次配置时: 1. 在 GitHub Developer Settings 创建 OAuth App。 2. 在 OAuth App 设置中启用 Device Flow。 3. 将 Client ID 填入“高级授权设置”,保存后即可使用“连接 GitHub”。 如果 DSH 所在网络不能直连 GitHub,可在同一页面的“本机运行设置”填写“GitHub 出站代理”并先执行网络测试。该地址只保存在本机 SSH 状态中,不参与 Gist 同步;支持 `http://` 与 `https://` 代理。留空时插件依次读取 `DSH_SSH_GITHUB_PROXY`、`HTTPS_PROXY` 和 `https_proxy`。设置页不会保存带账号密码的代理 URL,认证代理请通过 `DSH_SSH_GITHUB_PROXY` 环境变量配置。 授权只申请 `gist` scope。备用 classic personal access token 同样需要 `gist` scope;fine-grained token 是否可用取决于 GitHub 当前对 Gist 的权限支持。Gist ID 可以留空,首次同步时插件会自动创建一个私有 Gist。为避免主机地址等配置元数据公开,插件会拒绝公开 Gist。 同步范围: - SSH 主机、FTP/FTPS 连接与固定远端项目目录 - 代理库及代理密码 - 常用命令(名称与正文按配置元数据保存到私有 Gist,不自动识别或加密正文中的密码;不要在命令中嵌入密码、Token) - SSH 分组默认代理;从主机分组标题旁的编辑按钮配置,主机自身代理优先,没有设置时才回退分组代理,分组也没有代理时直连。只影响新连接,不修改主机自身配置,不影响 FTP 分组。被分组引用的代理不能直接删除。 - 密钥库元数据,以及密码、私钥和私钥口令 - 连接自身保存的 SSH/FTP 密码和内联代理密码 以下内容具有明确的本机边界,不会同步: - 当前 DSH 会话的主机/文件授权、权限和工作目录 - 本机端口转发规则 - 公开端口绑定、命令超时和最大输出限制 - GitHub Token 与同步加密密码本身 敏感字段在离开 DSH 前使用同步加密密码经 scrypt 派生密钥,并通过 AES-256-GCM 加密;Gist 中不包含明文密码或私钥。同步加密密码最少 6 个字符,仍建议使用 12 个以上字符的独立密码。该密码无法从 Gist 恢复,新设备必须输入相同密码,丢失后只能重新建立同步配置。 三种策略只在两端同时发生变化时决定冲突方向: - `智能`:按每条配置的更新时间合并,并使用删除墓碑避免旧设备复活已删除条目。 - `本地优先`:双方都修改时使用当前设备配置。 - `云端优先`:双方都修改时使用 Gist 配置。 空白新设备第一次连接已有 Gist 时始终先安全拉取云端,不会因为选择“本地优先”而覆盖已有配置。自动同步会在插件启动后、本地可同步配置变化约 3 秒后以及后台每 5 分钟运行;任务串行执行,避免并发覆盖。 工作台共享每 5 秒一次的轻量版本检查,后台页面暂停,回到页面立即检查;仅数据改变时刷新主机、FTP、代理库、密钥库、分组配置及命令列表。手动同步完成后立即检查,不重建终端或编辑弹窗。旧版本不认识新增集合,跨设备使用这些功能时建议各端同时升级。 覆盖可能丢失的一侧之前,插件会在同一个 Gist 中创建显式备份文件,并按设置保留 0~50 份。该数量只控制 `dsh-ssh.backup.*.json` 文件;GitHub 自己维护的 Gist revision history 无法由插件裁剪。 设置页显示最近一次由 GitHub 返回的云端 Gist revision SHA(短格式展示,完整值保留在提示中)。创建、上传、下载、合并或连接测试都会刷新这个云端版本;它表示真实的 Gist 修订版本,不是固定的数据结构版本号。 ## DSH 配置 ### 连接超时与终端复用 在「远端 → 设置」调整默认 SSH 连接超时(1000–120000 ms,默认 15000)。主机编辑器可跟随默认或单独覆盖,未保存主机的测试连接也使用相同设置。旧主机的非 15000 ms 自定义值保留;旧默认值跟随设置。命令执行超时与连接超时相互独立,不限制交互终端总时长。代理拨号、每跳 SSH 握手/认证分别有界,并不是整条跳板链的总耗时限制。 认证慢的服务器可以设为 60000 ms。已核验指纹后超时会提示认证阶段等待,建议同时检查远端 DNS/PAM;增加等待时间不能修复服务端延迟。 「复用终端 SSH 连接」默认关闭。开启后,同一浏览器管理范围或同一 AI 会话、同一主机的终端共享底层 SSH 认证连接;每个终端仍是独立 shell 和输出,AI 会话之间不共享连接。空闲 30 秒回收,每条连接最多 8 个终端,池最多 32 条连接;服务端 MaxSessions 更低时可能拒绝新增通道。共享连接失效会影响该连接上的终端,不自动重放命令。 关闭复用或修改主机、指纹、凭据、代理配置后,新终端不再复用旧连接;已有终端继续运行至主动关闭/自然退出。测试连接、一次性命令、文件传输和端口转发保持独立连接。复用开关和默认超时属于本机设置,不随 Gist 同步。 安装包后,bundle 会插入默认配置: ```yaml - id: ssh name: '@lemoncat7/dsh-ssh' config: statePath: !!js dshHomePath('ssh/state.json') exposeWeb: true apiPrefix: /ssh-local/v1 defaultCommandTimeoutMs: 30000 maxOutputChars: 32000 allowPublicBind: false ``` 插件依赖当前 DSH 的 `credentials` 和 `tools` 服务。浏览器管理还需要 Web Profile 的 `webServer`;浏览器终端和 AI 终端由插件内部按所有者隔离管理,不依赖 Host Root 中不存在的 `terminals` 服务。 ## 开发与打包 ```bash npm install npm test npm pack --pack-destination dist ``` 运行时与宿主兼容要求见[兼容说明](../docs/dsh-020-compatibility.md)。 ## 终端隔离说明 浏览器终端和 AI 终端共享同一个连接 Profile 与凭据,但不是同一个终端实例: - 浏览器终端由插件的同源管理 API 持有,页面关闭或空闲超时后清理。 - AI 终端由插件按 `sessionId` 分区持有。Web Profile 的官方 Terminal 服务位于每个 Agent Preset 的私有 Realm,主机插件不能跨 Realm 注册 Backend,因此插件使用相同的 owner-scoped 规则实现 SSH 终端隔离,并在插件卸载或进程退出时统一清理。 - 浏览器终端与右侧「SSH 活动」共用独立终端传输层。输出优先使用支持断线续传的 SSE 长连接实时推送,只有浏览器或反向代理不支持流式响应时才退回 cursor 增量轮询。 - 键盘输入按序号并发发送,由服务端按序写入 TTY;临时网络失败会使用同一序号重试,既减少 HTTP 往返造成的排队延迟,也避免并发输入乱序。 - AI 终端创建事件通过按会话隔离的 SSE 事件流通知 Web 客户端。首次订阅不重放旧终端,断线重连会按事件游标补发遗漏事件。 这种边界避免浏览器用户和模型同时争用同一个 TTY,也遵守 DSH 不允许跨 Agent 共享终端的所有权规则。 会话授权模式会直接约束模型可见工具:选择「仅命令」时隐藏交互终端工具;选择「终端控制」时隐藏 `ssh_exec`,远端命令必须经 `ssh_terminal_open` / `ssh_terminal_send` 执行,因此输入和输出会显示在右侧 SSH 活动中。执行层会再次校验权限,不能通过直接调用绕过。 ## 配置文件备份与迁移 在「设置 → 配置导入与导出」中操作,无需 GitHub 账号。导出时输入至少 8 位密码并再次确认,浏览器会下载 JSON 文件。文件整体加密,主机地址、密码和私钥都不会明文保存;请同时保管好文件与密码。最大文件大小为 1 MB。 导入时选择本插件导出的文件、输入密码,先解密查看各类条目数量,再确认导入。所有条目都作为独立副本添加,保留现有配置与授权;分组会使用独立名称,跳板、代理、凭据和项目的引用指向本次导入的副本。重复导入会再次创建副本。若已开启自动同步,新增条目会按当前同步策略同步。 范围包括 SSH、FTP/FTPS、固定项目目录、密钥库、代理库、分组代理、常用命令。不包含会话授权、端口转发、本机运行设置或 GitHub 授权。备份密码独立于 Gist 同步密码。