// 添加主机

在主机列表界面点击 + 按钮添加新服务器(在 iOS 上会弹出一个小菜单:选择添加主机)。

必填字段

  • 主机名 / IP — 服务器地址或 IP,支持 IPv4 和 IPv6。
  • 端口 — 默认为 22。如果服务器使用其他端口运行 SSH,请修改此项。
  • 用户名 — 要登录的 Unix 用户(例如 ubunturootdeploy)。
  • 认证方式 — 选择密码或 SSH 密钥(推荐)。

主机指纹验证

首次连接时,SSHBorg 会显示服务器指纹并要求您确认。这是一项安全检查,确保您连接的是正确的服务器而非冒充者。接受前请通过可信渠道核实指纹与服务器管理员提供的一致。

确认后,指纹将保存在本地。若日后连接时指纹发生变化,SSHBorg 将发出警告——这可能表示服务器重建、密钥轮换或中间人攻击。

// 提示
您可以随时用以下命令检查服务器指纹:
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

// 主机分组

当服务器列表越来越长时,可以把主机整理到可折叠的彩色分组中,例如生产家庭实验室客户

创建分组

  1. 添加或编辑主机,打开分组下拉菜单。
  2. 选择新建分组…,输入名称并从预设颜色中挑选一个。
  3. 保存主机后,主机列表会将该分组显示为独立的区块。

在 iOS 上也可以单独创建分组:点击 + 按钮 → 新建分组

使用分组

  • 折叠 / 展开 — 点按分组标题即可折叠或重新展开。状态会被记住,重启应用后也不会丢失。
  • 颜色 — 分组颜色显示为标题上的圆点,并作为组内主机图标的着色。
  • 编辑 — 长按分组标题并选择编辑,可重命名分组或更换颜色。
  • 删除 — 长按标题并选择删除。组内的主机不会被删除,只是变为未分组。

颜色可以从快捷色板中选择,在 Android 上也可以用渐变取色器自由调配——iOS 上从色板中选择。主机还可以拥有自己的颜色——在主机编辑器中、分组下方设置——它会覆盖分组颜色,对未分组的主机同样有效。

未分组的主机始终显示在列表顶部;如果不创建任何分组,列表的外观和行为与以前完全相同。

列表排序

设置 → 主机列表排序中选择列表的排列方式:

  • 字母顺序(默认)——分组按名称,组内主机按标签。
  • 最近使用——最后连接过的主机排在最前;从未使用过的排在最后。
  • 最常使用——连接次数最多的主机排在前面。
  • 手动——由你自己设定的顺序。

前三种方式中分组始终保持字母顺序,因此分组标题不会移动,只有组内的主机重新排列。手动排序时分组也可以移动。

要调整顺序,请选择手动,然后打开某个主机或分组标题的菜单—— 按钮(iOS 上为 )、长按,或Android TV 遥控器上的菜单键——并使用上移 / 下移。主机只能在自己所属的区块内移动:要放到另一个分组,请在主机编辑器中更改分组。切换到手动时会完整保留当时屏幕上的顺序,因此不会发生跳动;之后新增的主机会排到所属区块的末尾。

// SFTP 文件管理器

SFTP 文件管理器让您直接从手机浏览、上传、下载、重命名和删除服务器上的文件。在主机列表界面,通过主机菜单中的文件打开它。

浏览

点击文件夹进入。使用返回箭头或点击路径栏中的任意段落跳转到上级目录。

符号链接显示有小链接图标角标。点击符号链接会导航到其目标:若指向目录则进入,若指向文件则与普通文件相同。

上传文件

点击 上传 按钮(↑)从手机存储中选择一个或多个文件。上传立即开始,进度显示在界面顶部。

下载文件和文件夹

点击任意文件即可立即下载。要下载整个文件夹,点击其旁边的 下载 图标——SSHBorg 将下载整个目录树并保存到手机的 Downloads 文件夹。

如果目标位置已存在同名文件,对话框将询问您是 覆盖跳过该文件,还是 取消整个传输。

// 关于符号链接
文件夹下载时,指向目录的符号链接会被跳过——只下载普通文件(包括指向文件的符号链接)。这可防止意外的递归下载。

批量选择与操作

长按任意项目进入选择模式,然后继续点击其他项目以建立选择。工具栏显示当前选择的操作:

  • 下载 — 一次性下载所有选中的文件和文件夹,带进度对话框和取消支持。
  • 删除 — 删除所有选中的项目。删除非空文件夹会递归删除其所有内容。此操作不可撤销。
// iOS
  • 上传 — 打开操作菜单(⋯)并选择上传…;通过系统的“文件”浏览器选择文件。
  • 下载保存位置 — 保存到 SSHBorg 自己的文件夹,“文件” App 中显示在我的 iPhone → SSHBorg(iPad 上为我的 iPad)。下载从不覆盖任何文件:若名称已被占用,新文件会得到一个带编号的名称。
  • 文件夹 — 长按文件或文件夹打开其菜单:下载重命名删除
  • 多选 — 在“操作”菜单中选择选择项目,然后勾选项目。长按则会打开该项目的菜单。
  • 上传冲突 — 对话框提供覆盖保留两者(上传的文件会获得新名称)或取消

// SSH 密钥

基于密钥的认证比密码更安全,设置完成后无需记忆或输入任何内容。

生成密钥

点击主机列表界面顶部的钥匙图标打开 SSH 密钥,然后生成新密钥。SSHBorg 支持:

  • Ed25519 — 推荐。快速、紧凑且安全。
  • ECDSA(P-256 / P-384) — 与旧版服务器有良好兼容性。
  • RSA(2048 / 4096 位) — 最大兼容性,但速度较慢。

为密钥取一个有意义的名称(例如 my-vpswork-server),便于日后识别。

// 安全说明
SSHBorg 有意不允许导出私钥。密钥永不离开设备。如果您需要在其他设备上使用,请在该设备上生成新密钥并分别在服务器上授权——这是更安全的做法。

在服务器上授权密钥

生成密钥后,点击密钥查看其 公钥。复制并粘贴到服务器上目标用户的 ~/.ssh/authorized_keys 文件中。

  1. 在手机上,打开 SSHBorg → SSH 密钥(主机列表界面的钥匙图标)→ 点击密钥 → 复制公钥。
  2. 登录您的服务器(使用密码或已有密钥)。
  3. 将公钥追加到授权密钥文件:
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "ssh-ed25519 AAAA...您复制的密钥..." >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
  4. 尝试用 SSHBorg 连接——应无需密码即可登录。
// 服务器要求
确保服务器的 /etc/ssh/sshd_config 中有 PubkeyAuthentication yes。大多数发行版默认启用,但部分加固镜像可能禁用此选项。

加密存储的密钥和密码

开启 设置 → 安全 → 加密敏感数据,即可使用保存在设备安全硬件中的密钥(Android 上为 Android 密钥库,iOS 上为钥匙串)加密存储私钥和已保存的主机密码。在您启用之前该选项保持关闭;首次启动时显示的安全提示会指向它。

加密数据与设备以及本次安装的应用绑定:卸载应用后,已存储的密钥无法恢复,您需要生成新密钥并重新在服务器上授权。如果您在手机上保存了敏感的服务器凭据,强烈建议同时启用应用锁和此选项。

导入受密码短语保护的密钥时,只需在导入时用密码短语解锁一次。

// 命令建议

在终端输入时,SSHBorg 会在键盘上方显示建议栏。建议来自您所连接用户的 Shell 历史记录。

工作原理

终端会话开启时,SSHBorg 从远程服务器读取 Shell 历史文件,依次尝试以下位置:

  1. ~/.bash_history — Bash Shell 的默认位置
  2. ~/.zsh_history — Zsh 的默认位置(若设置了 $HISTFILE 也会检查)
  3. ~/.local/share/fish/fish_history — Fish Shell 用户

使用第一个存在且可读的文件。输入时,命令会实时过滤并以标签形式显示在建议栏。点击标签即可插入命令。

故障排除

没有建议出现

  • 历史文件可能尚不存在(首次登录,或 Shell 未配置保存历史)。
  • 确保 Shell 已配置写入历史。对于 Bash,在 ~/.bashrc 中添加:
    HISTFILE=~/.bash_history
    HISTSIZE=10000
    HISTFILESIZE=20000
  • 对于 Zsh,在 ~/.zshrc 中添加:
    HISTFILE=~/.zsh_history
    HISTSIZE=10000
    SAVEHIST=10000
    setopt APPEND_HISTORY SHARE_HISTORY

建议来自错误的用户

// 已知限制
如果您以某个用户连接后运行 sudo su - root(或用 su 切换到其他用户),建议栏仍显示原始登录用户的历史,而非 root 的历史。这是因为 SSHBorg 在 Shell 启动前使用连接凭据读取历史文件。

若要获取 root 的命令建议,请在 SSHBorg 中单独添加配置为直接以 root 登录的主机条目(若服务器允许)。

// 终端手势

终端除键盘输入外,还响应以下触摸手势:

  • 滚动历史 — 上下滑动浏览终端回滚缓冲区。
  • 缩放 — 捏合手势放大或缩小文字。
  • 复制文本 — 长按终端任意位置进入选择模式。拖动控制柄调整选择区域,然后点击 复制选中内容 只复制高亮文本,或点击 全部复制 复制所有输出。点击其他位置取消。 在 iOS 上,长按会选中手指下的单词并打开系统菜单,其中有拷贝粘贴全选;拖动选区任一端可扩大选区。
  • 粘贴 — 使用键盘打开时可见的扩展键栏中的 粘贴 按钮。

全屏程序。 占据整个屏幕的程序 — tmux、vim、nano、less — 没有自己的回滚缓冲区,因此在它们运行期间,视图会停留在当前画面,而不会滑入下面的 shell 输出。

要在其中滚动,需要由程序自己处理。在 tmux 中,将 set -g mouse on 加入 ~/.tmux.conf:此后滑动即可翻阅手指所在窗格的历史。任何接受鼠标输入的程序同理,例如设置了 set mouse=a 的 vim。使用 screen 时,请检查 ~/.screenrc 中是否有 altscreen on — 许多系统默认关闭它,此时 screen 会直接画在普通回滚缓冲区之上。

// 终端设置

设置 → 终端中可以按需调整终端:

  • 终端配色 — 经典深色方案(黑底白字)、在强光下更易读的浅色方案(白底黑字),或跟随应用主题(随应用深浅色主题自动切换)。更改立即生效,包括已打开的会话。
  • 保持屏幕常亮 — 终端打开时阻止屏幕熄灭。查看日志或运行长时间命令时很实用。默认关闭。
  • 默认字体大小 — 新终端会话的初始文字大小;每个会话中仍可用双指缩放。
  • 回滚缓冲区反向滚动命令建议 — 分别控制保留多少输出历史、滚动方向,以及上文介绍的建议栏。
  • 双击操作 — 可选:在终端双击时发送 Tab(自动补全),或连按两次 Tab(列出所有候选项)。默认关闭。 在 iOS 上,此选项关闭时双击会选中一个单词。

// 额外按键栏

软键盘打开时,上方会出现一排快捷按键。左右滑动按键栏可访问所有按键。

修饰键

CtrlAlt 是粘滞切换键——点击其中一个,再点击字母键即可发送组合键。每次按键后自动重置。

  • Ctrl+C — 中断正在运行的进程。
  • Ctrl+D — 发送 EOF / 关闭 shell。
  • Ctrl+Z — 暂停进程。
  • Ctrl+L — 清屏。

文字模式

拼写检查图标可在终端模式文字模式之间切换键盘。终端模式(默认)下自动更正和词语建议被禁用——适合输入命令和文件路径。文字模式下键盘像普通文本框一样工作,启用词语建议和自动更正。通过 SSH 输入自然语言时很有用,例如使用 Claude Code 或其他交互式工具。

在 Android 上,文字模式也是语音输入的前提。键盘的麦克风键需要一个真正的文本框来写入,因此在终端模式下语音输入不会产生任何内容——听写前请切换到文字模式。

导航与编辑

  • ESC — Escape 键。
  • Tab — shell 自动补全。
  • ↑ ↓ ← → — 光标方向键。
  • Home / End — 跳到行首或行尾。
  • PgUp / PgDn — 向上翻页 / 向下翻页。
  • Del — 向前删除(光标右侧的字符)。
  • 粘贴 — 将剪贴板内容粘贴到终端。

功能键

向右滑动按键栏可访问 F1 至 F12 功能键。

布局与自定义按键栏

按键栏有多种布局。点按栏上的 键即可切换:按键会让位于可用按键栏列表,点按其中一个即可,选择会被记住。也可以在设置 → 终端 → 额外按键栏 → 自定义中选择和管理按键栏。

  • 标准 — 经典的单行滚动栏。
  • 自然 — 按使用频率排列的单行,包含 / - | ~,方向键按键盘顺序排列(← ↑ ↓ →)。
  • 自然 ×2 — 两行铺满宽度:ESC / - Home ↑ End PgUp 在上,Tab Ctrl Alt ← ↓ → PgDn 在下。
  • 自然 ×3 — 同上,另加第三行功能键。
  • 精简 — 只有 ESC、Tab、Ctrl 和方向键,适合窄屏。

要创建自己的按键栏,可复制一个预设(旁边的 菜单,iOS 上为长按)或新建一个。编辑器会按实际外观显示按键栏:点按一个按键将其选中,然后用下方按钮把它左右移动、移到另一行、更改、在其后添加按键或移除。每一行可以滚动(按键保持自然宽度)或填满屏幕宽度(手机上每行最多约九个按键)。最多三行;按键大小可调。

除了常规按键,自定义按键栏还可以包含文本键:任意文本原样发送——单个 |sudo 前缀或一整条命令。用 \n 表示回车、\t 表示 Tab、\e 表示 Esc,这样 ls -la\n 就成了一键宏。另有两个操作键:固定在键盘关闭时仍保持按键栏可见,键盘显示或隐藏键盘。

自定义按键栏包含在设置备份中。在 Android TV 上一切都可用遥控器操作:编辑器的按键和按钮都能用方向键到达。

// 代理转发

SSH 代理转发允许 SSHBorg 中存储的密钥用于验证从远程服务器内部发起的进一步连接——例如 git clone 私有仓库,或跳转到第二台服务器。

在 SSHBorg 中启用转发

添加或编辑主机时,启用 代理转发 开关。SSHBorg 将作为该会话的 SSH 代理。

服务器端配置

服务器必须允许代理转发。检查 /etc/ssh/sshd_config

AllowAgentForwarding yes

大多数系统默认如此。修改后重启 SSH 守护进程:

sudo systemctl restart sshd

每主机客户端配置(可选)

如果您也从笔记本或台式机连接此服务器,可在本地 ~/.ssh/config 中持久配置转发:

Host myserver
    HostName 203.0.113.42
    User ubuntu
    ForwardAgent yes
// 安全说明
代理转发使远程服务器暂时获得访问您的 SSH 代理套接字的权限。在会话活跃期间,该服务器上的 root 用户(或受攻击的进程)可能使用您的密钥连接其他地方。仅在您信任的服务器上启用转发。

// 旧版加密算法支持

一些旧版服务器——网络设备、嵌入式设备或运行过时 OpenSSH 版本的系统——仅支持现代 SSH 客户端默认不再通告的加密算法。

在主机设置中启用允许旧版加密开关后,SSHBorg 会将以下算法追加到协商列表:

新增算法

  • 加密算法: aes128-cbcaes192-cbcaes256-cbc3des-cbc
  • 密钥交换: diffie-hellman-group14-sha1diffie-hellman-group-exchange-sha1diffie-hellman-group1-sha1
  • 主机密钥类型: ssh-dss(DSA 1024-bit)

服务器始终协商双方都支持的最强算法,因此启用此选项不会削弱与现代服务器的连接安全性。

// iOS
在 iOS 上无法使用 ssh-dss 主机密钥:应用所用的 SSH 库已不再包含 DSA,因此仅提供 DSA 主机密钥的服务器,即使开启此选项,也无法从 iPhone 或 iPad 连接。
// 安全提示
此列表中的算法在密码学上被认为较弱。仅对无法升级的服务器启用此选项。

// 连接断开与终端复用器

SSH 是手机与服务器之间的实时 TCP 连接。一旦连接中断——哪怕只是一秒——会话及其中运行的一切都会丢失。

移动端连接断开的原因

移动网络特别容易断开连接,原因如下:

  • IP 地址变更 — 出行或切换基站时,运营商可能分配新的公网 IP。由于 TCP 连接与 IP 地址绑定,现有 SSH 会话立即失效。
  • Wi-Fi ↔ 移动数据切换 — 在 Wi-Fi 和移动数据之间切换会改变 IP 并中断所有开放的 TCP 连接。
  • 空闲超时 — 运营商和 NAT 路由器通常在几分钟后断开空闲连接。长时间运行但静默的会话(查看日志、等待输入)容易受此影响。
  • 信号丢失 — 隧道、地下车库或信号弱区域都可能短暂断网,足以终止会话。
  • Android 后台限制 — 为了省电,Android 会限制应用在后台持续运行的时长。在后台累计约六小时后,系统会停止 SSHBorg 的会话;你会收到通知,重新打开应用即可重新连接。将应用切回前台会重置此限制。
  • iOS 会在后台挂起应用 — SSHBorg 离开屏幕约三十秒后,iOS 会将其挂起,连接随之断开。回到应用时,SSHBorg 会自动重新连接(仅在未保存密码时才会询问密码),并在输出中标记该位置:这是一个新的 shell,旧 shell 中运行的内容已经丢失。在 iOS 上,终端复用器是在使用其他应用时让工作继续运行的唯一方法。
// 重要
如果您在 SSH 终端中直接运行长时间命令(编译、备份、数据库迁移),连接断开时命令会立即被终止。任何未完成的工作都可能处于不一致状态。

解决方案:tmux 或 screen

终端复用器在服务器上运行持久会话,完全独立于 SSH 连接。连接断开时,会话及其中运行的一切继续运行。重新连接后,重新附加即可找到一切如常。

这是从手机管理服务器最有用的习惯。

tmux 快速入门

tmux 在大多数现代 Linux 发行版上可用,是推荐的选择。

# 开始一个新命名会话
tmux new -s work

# 从会话分离(保持运行)
Ctrl+B,然后 D

# 列出正在运行的会话
tmux ls

# 重新附加到会话
tmux attach -t work

# 附加到最近的会话
tmux attach

screen 快速入门

screen 较旧,但在几乎所有 Unix 系统上都可用,包括可能未安装 tmux 的最小服务器镜像。

# 开始一个新命名会话
screen -S work

# 从会话分离
Ctrl+A,然后 D

# 列出正在运行的会话
screen -ls

# 重新附加到会话
screen -r work

移动端推荐工作流程

  1. 用 SSHBorg 连接服务器。
  2. 立即开始或重新附加 tmux/screen 会话:tmux attach || tmux new -s main
  3. 在复用器内运行命令。
  4. 若连接断开,重新连接即可——会话仍然存在。
// 提示
您可以在服务器的 ~/.bashrc~/.zshrc 中添加 tmux attach || tmux new -s main,这样每次通过 SSHBorg 登录时都会自动启动复用器会话。

// 跳板机

跳板机(也称堡垒主机)是一台中间服务器,用于访问无法从互联网直接到达的目标服务器。SSHBorg 原生支持单跳和多跳链。

在 SSHBorg 中配置跳板机

  1. 在 SSHBorg 中将堡垒服务器添加为普通主机(例如 bastion)。
  2. 将目标服务器添加为另一台主机。
  3. 在目标主机设置中,将 跳板机 设为您创建的堡垒主机。
  4. 在堡垒主机条目上启用 代理转发——这允许密钥通过堡垒转发到目标服务器进行认证。
// 工作原理
SSHBorg 先与堡垒建立 SSH 连接,然后通过它向目标服务器打开转发的 TCP 通道。您的私钥永不离开手机——堡垒只代理加密流。

多跳链

如果需要跳过多台中间服务器(例如 互联网 → 堡垒 → DMZ → 目标),为每跳创建一个条目并链接:

  • bastion — 无跳板机,启用代理转发
  • dmz — 跳板机 = bastion,启用代理转发
  • target — 跳板机 = dmz
// 重要
代理转发必须在每个中间跳上启用,而不只是第一个。缺少代理转发会导致认证链断裂,最终服务器连接将失败并显示"permission denied"错误。

等效的手动配置(仅供参考)

桌面端 ~/.ssh/config 中的等效配置如下:

Host bastion
    HostName bastion.example.com
    User admin
    ForwardAgent yes

Host target
    HostName 10.0.1.50
    User ubuntu
    ProxyJump bastion
    ForwardAgent yes

使用此配置,笔记本上的 ssh target 会透明地跳过堡垒。

防火墙要求

  • 您的手机必须能在 SSH 端口(通常为 22)上访问堡垒。
  • 堡垒必须能在其 SSH 端口上访问目标。
  • 目标不需要从手机直接可达。

// 多会话

SSHBorg 允许您同时保持多个 SSH 终端会话和 SFTP 文件管理器会话,甚至可以连接到不同的服务器。

  • 点击主机即可打开终端,或在主机菜单中选择文件打开文件管理器。如果该主机已有打开的会话,同一菜单还可以新建会话。
  • 使用终端下方的标签页在已开启的会话之间切换;拥有多个会话的主机会打开带编号的选择器。
  • 只要网络连接正常,会话在后台保持活跃——在 iOS 上只能维持很短时间,参见连接断开
  • 主机列表在每台主机旁显示小角标,标明活跃的 SSH 和 SFTP 会话数量,方便一目了然。
// 提示
长时间运行的命令(编译、备份、日志监控)在切换到其他会话时仍会继续运行。如果希望它们在 SSH 连接断开后也能继续,请在服务器端使用 tmuxscreen

// 应用安全

应用锁

设置 → 安全 → 应用锁 中选择保护方式:(默认)、仅生物识别(指纹或人脸解锁)、设备锁(除生物识别外,还可使用设备的 PIN、图案或密码),或应用内 PIN 或密码短语。启用锁定后,SSHBorg 在显示任何主机、凭据或会话数据前都会要求验证。

应用内 PIN 或密码短语 可在任何设备上使用,即使没有生物识别硬件或系统屏幕锁——因此它是 Android TV 上的正确选择。更改或移除时会先要求输入当前的。忘记后无法找回:你需要清除应用数据或重新安装,因此请保留主机的备份。

您可以设置不活动超时——在后台等待该时长后,应用会自动锁定。

// iOS
应用锁提供仅生物识别(面容 ID 或触控 ID)和设备锁(设备密码或生物识别)。没有应用内 PIN 或密码短语。

截图保护

SSHBorg 默认阻止截图和录屏,防止敏感的终端内容通过最近应用界面或截屏工具泄露。

如果需要截图(例如分享终端输出),可在 设置 → 安全 → 允许截图 中临时禁用截图保护。

// iOS
iOS 不允许应用阻止截屏或录屏,因此没有此设置。启用应用锁后,SSHBorg 一离开屏幕就会遮盖其内容,主机和终端不会出现在 App 切换器中。

凭据存储

开启加密敏感数据后(参见SSH 密钥),密码和私钥会使用保存在 Android 密钥库(Android 10+ 上由硬件支持)或 iOS 钥匙串中、仅限本设备的密钥加密存储。凭据永不写入外部存储,也不会传输到任何地方。

// 备份说明
由于加密密钥永远不会离开设备的安全硬件,密钥无法从云备份或设备备份中恢复,也不会自动迁移到新手机。更换设备前,请确保在新设备上生成新密钥并在所有服务器上授权。

// 配置备份

SSHBorg 可以将主机配置和应用设置导出并导入为 JSON 文件。这样您可以将服务器列表转移到另一台设备,或保留一份可移植的配置备份。

// 重要
备份包含主机配置和应用设置(终端、外观、行为)。密码和 SSH 密钥从不导出 — 密钥材料需要在新设备上重新设置。不过备份会记录每个主机所用密钥的名称:如果在导入前重新创建同名密钥,其主机会自动重新关联。

导出

前往 设置 → 备份 → 导出备份。通过系统文件选择器选择文件保存位置。文件默认命名为 sshborg_backup.json(iOS 上为 sshborg-backup-日期.json)。

导入

前往 设置 → 备份 → 导入备份。选择之前导出(或手动创建)的 .json 文件。SSHBorg 将其与现有主机列表合并:

  • 名称与现有条目匹配的主机将被更新
  • 具有新名称的主机将被添加
  • 文件中不存在的主机保持不变
  • 更新已有主机时会保留其已保存的密码、密钥和已接受的主机密钥——备份从不包含这些内容。
  • 没有密钥的主机会关联到名称与导出的 keyLabel 匹配的密钥(若存在);否则忽略该字段。
  • 被更新的主机会保留本设备已有的使用数据——最后连接时间、计数和手动位置;文件只补上缺少的部分。

JSON 格式

导出文件是一个标准 JSON 对象。您也可以手动创建它,从其他来源批量导入服务器列表。

{
  "version": 7,
  "exported_at": "2026-05-14T10:00:00Z",
  "groups": [
    { "name": "生产", "color": -1754827, "position": 0 }
  ],
  "hosts": [
    {
      "label":           "我的 VPS",
      "hostname":        "203.0.113.42",
      "port":            22,
      "username":        "ubuntu",
      "agentForwarding": false,
      "jumpMode":        "simple",
      "jumpHosts":       null,
      "jumpHostIdList":  null,
      "portForwardings": null,
      "sftpStartMode":   "last",
      "sftpStartDir":    null,
      "sftpShowHidden":  false,
      "allowLegacyCiphers": false,
      "position":        0,
      "lastConnected":   1757404800000,
      "connectCount":    12,
      "keyLabel":         "我的 VPS 密钥",
      "group":           "生产"
    }
  ],
  "settings": {
    "night_mode":            0,
    "scrollback_lines":      2000,
    "terminal_font_size":    13,
    "terminal_color_scheme": 0,
    "double_tap_action":     0
  }
}

可选的 settings 对象包含应用设置,导出时会自动写入;手动创建文件时可以省略。

字段说明

  • label — SSHBorg 中显示的名称。导入时用作唯一合并键。必填。
  • hostname — 服务器地址或 IP(IPv4 或 IPv6)。必填。
  • port — SSH 端口。默认值:22
  • username — 登录用户名。必填。
  • agentForwardingtrue 启用 SSH 代理转发。默认值:false
  • jumpMode"simple"(使用 jumpHosts 文本)或 "host_list"(使用 SSHBorg 内部主机 ID)。手动创建文件时请使用 "simple"
  • jumpHosts — 以逗号分隔的跳板机列表,格式为 [用户名@]主机[:端口]。仅在 jumpMode"simple" 时使用。
  • portForwardings — 以换行符分隔的本地端口转发规则,使用 SSH -L 语法,例如 "8080:localhost:8080"
  • sftpStartMode — SFTP 起始目录:"last"(记住上次访问的目录)、"fixed"(始终使用 sftpStartDir)、"home"(服务器主目录)。默认值:"last"
  • sftpStartDir — 当 sftpStartMode"fixed" 时使用的路径。
  • sftpShowHiddentrue 时在该主机的 SFTP 浏览器中显示隐藏文件(点文件,以 "." 开头的名称)。默认 false
  • allowLegacyCiphers — 设为 true 可启用上文介绍的旧式加密算法。默认为 false
  • keyLabel — 此主机所用 SSH 密钥的名称。导入时,如果存在同名密钥,则关联到该主机;否则忽略该字段。密钥本身从不包含在备份中。
  • group — 主机所属分组的名称。分组列在顶层的 groups 数组中,包含 namecolor(ARGB,带符号 32 位整数)。如果主机引用的分组不在数组中,会用默认颜色自动创建 — 因此手写文件时可以完全省略该数组。
  • color — 主机的可选颜色(ARGB,带符号 32 位整数),会覆盖分组颜色。
  • position — 主机在手动排序中的位置,按其所属区块(未分组区块或某个分组)内部计数。省略则排到末尾。分组在 groups 数组中也有各自的 position
  • lastConnected — 最后一次连接的时间,以 Unix 纪元起的毫秒数表示。用于“最近使用”排序。
  • connectCount — 向该主机开启过多少个终端会话。用于“最常使用”排序。
// 可选字段
labelhostnameusername 外,所有字段均为可选。省略的字段将使用默认值。

// ANDROID TV

SSHBorg 可在 Android TV 和 Google TV 上运行。可用遥控器的方向键操作,但由于这是一款文字较多的应用,外接实体键盘会带来很大便利。

使用遥控器导航

  • 方向键 — 在行与控件之间移动焦点。
  • OK(中键) — 主操作:连接主机、打开文件夹、下载文件、展开分组。
  • 返回 — 上一级或退出当前界面。

打开某一行的菜单

要对某一行进行重命名、删除、编辑、复制或下载,请打开其菜单:在选中该行时按遥控器的 菜单(选项)键,或 长按 OK。单按 OK 执行主操作,而非打开菜单。

输入文字:请使用实体键盘

强烈建议使用 实体键盘(USB 或蓝牙,Android TV 两者都支持),终端基本上离不开它。有了键盘,文本框和 shell 都能正常使用。

没有键盘时,屏幕键盘仍可用于简短输入:聚焦一个输入框,按 OK 打开,输入后按键盘上的 OK / 前往 确认——在密码提示框中这会直接连接。但用屏幕键盘输入 shell 命令并不实用。

在 TV 上锁定应用

TV 通常没有指纹识别或屏幕锁,因此请用内置的 PIN 或密码短语 锁保护应用(设置 → 安全)——它完全可用遥控器或键盘操作。参见 应用安全