Termius + tmux:我的 VPS 远程管理方案,让 AI Agent 不再受 SSH 断线影响

技术专业 · 今天

AI编程带来的变化就是你只需要脑子装好想做的事情,需要达到的效果,知道如何验证这个结果,剩下的就交给各种智能体来实现。你可以边旅游间歇性的查看一下处理的进度,做一个进度验收就可以了。但是这个方式存在的一个问题就是如何保持项目的连续性,如何ssh中断后重新登录后还可以延续之前的进程?下面就是我最近总结出来的高效率的组合:Termius + tmux:我的 VPS 远程管理方案

最近,我在 Linux VPS 上部署了 Pi Agent、Hermes Agent 等 AI 工具,希望能够随时随地通过 Mac 或手机连接服务器,执行 AI 任务、检查运行状态和管理系统。

在实际使用中遇到了一个问题:通过 SSH 启动 Pi Agent 后,如果关闭 SSH 客户端或者网络意外中断,正在运行的任务可能随之终止。

经过一番尝试,我最终采用了 Termius + tmux 的组合。

这套方案并不复杂,却很好地解决了远程终端的连接管理和任务持续运行问题。

一、我的使用环境

目前主要使用以下工具:

组件用途
Mac主要操作设备
TermiusSSH 客户端,管理 VPS 连接
Debian Linux VPS远程服务器,运行 AI 工具
tmux终端会话管理,保持任务运行
Pi Agent终端 AI Agent,执行编程和系统管理任务
Hermes Agent另一个部署在服务器上的 AI Agent

整个系统的结构如下:

Mac / iPhone
      │
      │ Termius
      │
      ▼
  SSH 加密连接
      │
      ▼
 Debian Linux VPS
      │
      ├── tmux 会话:pi
      │       │
      │       └── Pi Agent
      │
      ├── tmux 会话:monitor
      │       │
      │       └── 系统监控命令
      │
      └── 其他后台服务
              │
              ├── Hermes Agent
              └── 其他 Linux 服务

其中,monitor 是可以按需创建的独立会话,Hermes Agent 也不一定需要通过 tmux 运行。

这套架构有两个关键点:

Termius 负责连接服务器,tmux 负责保持服务器上的终端会话。

两者各司其职,互不替代。


二、为什么选择 Termius?

Termius 是一款跨平台 SSH 客户端,支持 macOS、Windows、Linux、iOS 和 Android。

对于经常需要管理 VPS 的用户,它有几个比较实用的特点。

1. 集中管理多台服务器

可以在 Termius 中保存服务器的连接信息,包括:

  • VPS 地址和 SSH 端口
  • 登录用户名
  • SSH 密钥
  • 服务器分组

不需要每次手动输入 SSH 命令。

例如,我可以将不同用途的服务器组织到相应的分组中,方便快速连接。

2. 使用 SSH 密钥登录

相比每次输入密码,我更倾向于使用 SSH 密钥认证。

在 Mac 上可以使用已有的 Ed25519 密钥:

~/.ssh/id_ed25519

将私钥导入 Termius 的 Keychain,然后在对应的 Host 中选择该密钥。

服务器端则需要将公钥加入:

~/.ssh/authorized_keys

这样就可以使用密钥完成 SSH 认证。

需要注意,导入 Termius 的是私钥,而部署到 VPS 的是公钥。私钥不应该上传到服务器或随意分享。

3. 多设备访问

Termius 的另一个优势是跨平台。

在 Mac 上可以进行复杂的系统维护,在手机上则可以临时检查服务器状态,或者恢复正在执行的 AI 任务。

不过,Termius 本质上仍然是 SSH 客户端。

它解决的是如何方便地连接服务器,而不是如何保证服务器上的程序持续运行。

这正是需要 tmux 的原因。


三、为什么还需要 tmux?

最初,我通过 Termius 连接 VPS 后,直接启动 Pi Agent:

pi

这样虽然可以正常使用,但 Pi Agent 运行在当前 SSH 终端中。

一旦关闭 Termius,或者网络连接中断,前台程序就可能收到终端挂断信号并退出。

对于普通命令,这通常没有什么影响。

但对于需要运行几分钟甚至几十分钟的 AI Agent 任务,就比较麻烦了。

例如:

  • 让 Pi Agent 分析服务器日志。
  • 让 Pi Agent 修改和测试代码。
  • 执行耗时较长的自动化任务。
  • 在远程服务器上运行 Python 脚本。

如果 SSH 中途断开,就可能导致任务中断。

tmux 的作用,就是让终端会话独立于 SSH 连接存在。

使用 tmux 后:

Termius
   │
   ▼
SSH
   │
   ▼
Debian VPS
   │
   ▼
tmux
   │
   ▼
Pi Agent

即使 Termius 断开连接,tmux 及其内部运行的 Pi Agent 仍然可以继续工作。

下次重新连接 VPS,还可以恢复之前的终端界面。

这相当于把终端会话保留在服务器上,而不是绑定在某一次 SSH 连接上。


四、在 VPS 上安装 tmux

我的 VPS 使用 Debian Linux,因此安装非常简单。

首先,通过 Termius 登录 VPS。

执行:

sudo apt update
sudo apt install tmux -y

安装完成后检查版本:

tmux -V

正常情况下会显示类似:

tmux 3.3a

至此,tmux 就安装完成了。

不需要复杂配置,默认状态就可以满足大多数需求。


五、使用 tmux 运行 Pi Agent

这是我目前最常用的操作方式。

第一步:创建 Pi Agent 会话

通过 Termius 登录 VPS 后,执行:

tmux new -s pi

这里的 pi 是自定义会话名称。

进入 tmux 后,再启动 Pi Agent:

pi

现在,Pi Agent 就运行在 tmux 会话中了。

第二步:离开会话

当 Pi Agent 正在执行任务,而我需要关闭 Termius 时,不需要退出 Pi。

只需要依次按下:

Ctrl + B,然后按 D

这会让当前终端从 tmux 会话中分离。

终端通常会显示:

[detached (from session pi)]

此时可以直接关闭 Termius。

Pi Agent 仍然运行在 VPS 上。

如果 Pi 正在执行一个尚未结束的任务,该任务可以继续执行;如果 Pi 已经完成任务并等待输入,则会继续保持等待状态。

第三步:重新连接

下次打开 Termius,重新登录 VPS。

执行:

tmux ls

可以看到之前的会话:

pi: 1 windows

然后执行:

tmux attach -t pi

就可以恢复原来的 Pi Agent 界面。

整个过程不需要重新启动 Pi,也不需要重新创建终端会话。

第四步:简化连接命令

实际使用中,我更推荐:

tmux new -A -s pi

这个命令有两个作用:

  • 如果 pi 会话不存在,就创建新会话。
  • 如果 pi 会话已经存在,就直接连接。

这样每次登录 VPS 后,只需要执行同一个命令。

不过需要注意,创建新的 tmux 会话不等于自动启动 Pi Agent。

如果会话是第一次创建的,仍然需要执行:

pi

六、我的日常使用流程

现在,我使用 Termius + tmux 管理 Pi Agent 的流程基本如下。

场景一:在 Mac 上启动 AI 任务

首先打开 Termius,连接 VPS。

执行:

tmux new -A -s pi

进入会话后,启动 Pi Agent(如果尚未运行):

pi

然后交给 Pi 一个任务,例如:

检查当前 VPS 的系统运行情况,包括 CPU、内存、磁盘空间,以及主要服务的运行状态,并分析最近的异常日志。

Pi Agent 开始执行任务后,我可以继续观察,也可以暂时离开。

场景二:关闭 Mac 或 Termius

如果需要离开电脑,按下:

Ctrl + B,然后 D

随后关闭 Termius。

只要 VPS 和 tmux 仍然正常运行,Pi Agent 就不会因为 SSH 断开而被终止。

场景三:使用手机继续查看

之后,我可以在手机上通过 Termius 连接同一台 VPS。

执行:

tmux attach -t pi

就能进入之前的 Pi Agent 会话,查看执行结果。

必要时还可以继续向 Pi 输入新的指令。

这样便实现了:

Mac 启动任务 → 断开 SSH → VPS 继续执行 → 手机重新连接 → 查看结果。

对于需要远程管理 AI Agent 的场景,这种方式非常实用。


七、tmux 的一些实用命令

日常操作中,真正需要记住的命令并不多。

命令作用
tmux new -s pi创建名为 pi 的会话
tmux new -A -s pi创建或连接 pi 会话
tmux ls查看所有会话
tmux attach -t pi连接 pi 会话
tmux attach -d -t pi断开其他客户端并连接
tmux kill-session -t pi结束 pi 会话
tmux kill-server结束当前用户的所有 tmux 会话

tmux 还支持多个窗口和分屏。

例如:

Ctrl + B,然后 C

可以创建新窗口。

Ctrl + B,然后 N

可以切换到下一个窗口。

Ctrl + B,然后 %

可以将终端左右分屏。

这样就可以在一个 tmux 会话中同时运行 Pi Agent 和系统监控命令。


八、实际使用中遇到的鼠标复制问题

在 Termius + tmux + Pi Agent 的组合中,我还遇到过一个细节问题:鼠标选择和复制文本不太方便。

当时使用的 Pi Agent 版本是:

pi 1.2.0

我检查过 tmux 的鼠标设置:

tmux show -g mouse

输出:

mouse off

说明 tmux 的鼠标模式并没有开启。

但在 Pi Agent 的交互界面中,直接使用鼠标选择文本仍然不太顺利。

原因是 Pi Agent 本身采用终端交互界面(TUI),会处理部分终端输入事件。tmux 的鼠标模式关闭,并不代表应用程序一定不会接收鼠标事件。

我的解决方法

在 Mac 上使用时,可以尝试:

按住 Shift + 鼠标拖动选择文本,然后按 Command + C 复制。

在我的使用环境中,这个方法可以正常工作。

需要注意,Shift 是否能够强制进行终端文本选择,还取决于具体 SSH 客户端及其终端实现。

此外,Pi Agent 还提供不同的终端界面模式:

pi --tui-mode regular

与默认的全屏交互模式相比,普通模式在部分终端中可能更方便进行文本选择和查看历史输出。

但它不是专门用于关闭鼠标事件的参数,实际效果仍需要根据客户端测试。


九、tmux 能不能让 Pi Agent 24 小时自动监控 VPS?

这是另一个值得讨论的问题。

tmux 可以保证 Pi Agent 不会因为 SSH 断开而退出,但并不意味着 Pi Agent 会自动持续执行监控任务。

例如,我通过 tmux 启动 Pi:

tmux new -s pi
pi

当 Pi 完成当前任务后,它通常会停留在等待用户输入的状态。

即使这个会话保持运行 24 小时,也不会自动每隔几分钟检查一次服务器。

因此,需要区分:

tmux 负责保持会话,任务调度系统负责定时执行。

如果希望构建真正的 VPS 自动监控系统,可以进一步引入 systemd timer。

例如:

Debian VPS
    │
    ├── Termius + SSH
    │       │
    │       └── tmux
    │             │
    │             └── Pi Agent
    │
    └── systemd timer
            │
            └── 每 5 分钟执行检查
                    │
                    ├── CPU / 内存
                    ├── 磁盘空间
                    ├── 服务状态
                    ├── 错误日志
                    │
                    ▼
                发现异常
                    │
                    ▼
                调用 Pi Agent
                    │
                    ▼
                AI 分析故障
                    │
                    ▼
                发送告警

这种方式将交互式 AI Agent 与自动化监控分离,更适合长期使用。

其中,Pi Agent 可以通过非交互模式执行分析任务,不必依赖已经打开的 tmux 会话。


十、Termius + tmux 的局限性

虽然这套方案非常方便,但它并不是完整的后台服务管理系统。

1. VPS 重启后会话不会自动恢复

如果服务器重启,原来的 tmux 会话就会消失。

需要重新创建会话并启动 Pi Agent。

2. Pi Agent 崩溃后不会自动重启

tmux 保持的是终端会话,并不会自动修复程序故障。

如果 Pi Agent 自身退出,tmux 不会主动重新启动它。

3. tmux 不负责定时任务

如果希望每隔几分钟执行检查,需要另外配置 cron 或 systemd timer。

4. 不要误操作结束会话

在 tmux 中直接退出最后一个 Shell,可能导致整个会话结束。

如果只是暂时离开,应该使用:

Ctrl + B,然后 D


十一、总结:简单但非常实用的组合

经过实际使用,我认为 Termius + tmux 是一种非常适合个人 VPS 和 AI Agent 用户的远程管理方案。

两者解决的是不同层面的问题:

Termius 解决如何方便地连接服务器。

tmux 解决 SSH 断开后如何保留终端会话。

它们结合后,能够实现:

Mac / 手机
    │
    ▼
Termius
    │
    ▼
SSH
    │
    ▼
Linux VPS
    │
    ▼
tmux
    │
    ▼
Pi Agent

最重要的是,使用起来并不复杂。

日常只需要记住三个操作。

启动或恢复会话:

tmux new -A -s pi

临时离开:

Ctrl + B,然后 D

查看已有会话:

tmux ls

这套方案最大的价值,是让 VPS 上的终端任务不再依赖本地电脑与服务器之间持续稳定的 SSH 连接。

对于我目前使用的 Pi Agent 等 AI 工具而言,这意味着可以在 Mac 上启动任务,关闭客户端后让任务继续执行,再通过其他设备重新连接查看结果。

虽然它还不能替代 systemd 这样的后台服务管理工具,但对于交互式 AI Agent、远程开发和日常 VPS 运维来说,已经是一个足够轻量、稳定且实用的解决方案。

Termius 负责连接,tmux 负责保持会话,Pi Agent 负责执行任务。

三者组合,让一台普通 VPS 变成了可以随时接入的远程 AI 工作环境。

Theme Jasmine by Kent Liao