更新于

手机 SSH 敲不动命令:在 Telegram 里跟 AI 对话处理服务器问题

你在地铁上、饭桌上,或者刚被吵醒,服务器出了问题。当然可以打开手机上的 SSH 客户端,在玻璃键盘上一个字符一个字符地敲 docker logs --since 30m --tail 200 …。本文讲另一种在手机上处理服务器故障的办法,至少先弄清楚哪里坏了:在 OpsMate 的 Telegram 机器人里用一句话描述问题,由 AI 通过 SSH 去跑检查命令,有风险的命令由你自己批准。内容包括:要先配好什么、每条命令会怎么处理、在手机上做到哪一步比较合适,以及什么时候该放下手机、回到电脑前。怎么在 Telegram 里收到告警是另一件事,见 人不在电脑前:用 Telegram 收服务器告警。本文从那篇结束的地方接着讲:你已经知道出事了,手边只有一部手机。

机器人界面中英自动切换:按你的 OpsMate 账号语言设置,没设置时按 Telegram 的语言;也可以用 /language 切换。AI 对话里,AI 会用你当前的语言回复。本文按中文界面的按钮文字来写。

为什么手机 SSH 这么难用

Termius、Blink Shell 这类手机 SSH 客户端本身没问题,用手机连服务器看一眼 uptime 完全够用。真正排障时才难受:

如果这些你都能接受,手机 SSH 客户端就是个好工具。下面的内容写给更想用一句话说清问题、然后看总结的人。

开始之前:收告警不需要云端凭证,远程 SSH 需要

这是两件事,前提条件不一样:

你想做的事需要什么
在 Telegram 私聊里收服务器告警绑定 Telegram 账号、配置告警。不需要云端凭证。
从 Telegram 远程 SSH 到服务器(「AI SSH 模式」)这台服务器要在 OpsMate 云端配有 SSH 密钥。没有的话,机器人会回复「未配置 SSH 密钥,无法使用 AI SSH 模式」。

这就是要付出的代价,直说:OpsMate 桌面端默认把 SSH 凭证留在你自己的电脑上;而 Telegram 机器人跑在云端,想从 Telegram 连到服务器,这台服务器的密钥也得放到云端。要不要这么做,按服务器逐台决定。几个实际的做法:

无论怎么选,每台服务器都照样可以在 Telegram 收告警;只有远程 SSH 这一步需要云端密钥。

1. 进入 AI SSH 模式,用一条消息说清问题

在和 OpsMate 机器人的私聊里发 /servers,选中这台服务器,点「🤖 AI 对话」,就进入了「AI SSH 模式」。之后你不用再敲 shell 命令,直接给 AI 发普通消息就行。这也是它和一般“Telegram SSH 机器人”的区别:那类机器人把你敲的内容原样转给 shell;这里是你描述问题,AI 决定跑哪些命令,每条命令先过一道安全检查。

如果你是从告警过来的,注意:告警卡片上的「📋 查看与处理」不会进入 AI SSH 模式。它打开的是问题详情(问题、严重度、服务器、状态、证据、更新时间),下面有「重新取证」「暂缓」「人工介入」「AI 建议」「标记已解决」几个按钮。「AI 建议」只给文字建议,不执行任何命令;「人工介入」用来描述情况,用 /done 或 /cancel 结束。这两个都不是 AI SSH 模式。告警卡片用来看问题,从 /servers 打开的 AI 对话才是跑命令的地方。

第一条消息最好写清楚现象、哪个服务、大概从几点开始,以及现在先不要做什么:

接口从 8:40 左右开始报 502,查一下应用容器和 Nginx,先别重启任何东西。

在手机上打字,短一点没关系。“网站从晚上 9 点开始很慢,看看负载、内存和磁盘”就足够 AI 开始了。

2. 每条命令会怎么处理:直接执行,还是等你批准

跑哪些命令由 AI 决定。不是每条命令都要你批准,每条命令都会先过安全检查:

这条命令…你会看到接下来
通过安全检查单独一条「📟 终端输出」消息,里面是原始输出直接执行,AI 随后自动接着分析输出
没通过检查「⚠️ 待确认命令(风险等级)」,附上命令本身和被拦下的原因点「✅ 批准」才会执行。输出同样单独发一条「📟 终端输出」,但 AI 这时不会接着分析:输出留在会话里,等你发下一条消息时,AI 连同你的消息一起分析

想改被拦下的命令,点「✏️ 修改」。改过的命令会重新过一遍同样的安全检查:

路上做决定时,下面几条很关键:

那些「📟 终端输出」消息就是你的证据,AI 的总结是根据它们得出的。总结里说“磁盘满了”,就往上翻,找到 df -h 里对应的那一行。

3. 先看证据,再选下一步

AI 每次回复下面都带着「▶️ 1. …」这样的下一步建议按钮,列出它接下来想查或想做的事。点一下就按那一步继续,不用自己打字。点建议按钮等于发了一条新消息:AI 开始新的一轮对话,3 轮的上限重新计算,也和普通消息一样消耗 AI 调用次数。

想自己跑命令,就点「⏹ 结束 AI 模式」,在同一个对话里回到手动 SSH。下面几条短命令值得记住,正好用在这种时候:

uptime
df -h
free -h
docker ps -a

uptime 看负载(和 CPU 核数对比),df -h 看磁盘满没满,free -h 看可用内存(看 available 一列),docker ps -a 看哪些容器在跑、在重启、已经退出。它们都说明不了为什么坏,只能告诉你下一步该往哪看。

在手机上能把服务器修好吗?

有时候可以,前提是改动小、容易撤回。适合在 Telegram 里做的:

更大的动作,手机就不是合适的工具了,哪怕 AI 已经把这一步建议出来、按钮就在眼前。

什么时候该回到电脑前

遇到下面这些情况,放下手机,打开电脑:

回到电脑前,OpsMate 网页端把 SSH 终端和 AI 放在同一个服务器页面,可以接着手机上的进度继续查,见 不会运维也能查日志:终端里的「一句话 AI + 手敲命令」。如果是整站打不开、只有你一个人值班,凌晨两点网站打不开里的前 15 分钟顺序,用手机和用电脑一样适用。

边界

说明性示例

下面三个场景是说明性示例,不是真实客户案例;人名、服务和时间都是虚构的。

在地铁上(独立开发者)。 阿乐一个人在一台 VPS 上跑着一个小 SaaS。早上通勤路上,有用户说后台页面报 502。他发 /servers,选中那台 VPS,点「🤖 AI 对话」,发了一句:“后台 8:40 开始 502,查应用容器和 nginx,先别重启。”第 1 轮一起跑了 docker ps -a 和 ss -ltnp:app 容器一直在 Restarting,3000 端口没有进程监听。第 2 轮读了应用最近的日志,第一条异常是连 Redis 被拒绝。第 3 轮发现 redis 容器已经退出。AI 建议重启 redis,这条命令以「⚠️ 待确认命令」的形式发过来,附着风险等级和原因。阿乐已经把日志复制进笔记,于是只对这一个容器点了「✅ 批准」。重启的输出以「📟 终端输出」发来,AI 在等他开口,他就发了一句:“重启了,看看 app 现在稳不稳。”AI 把重启输出和这句话一起分析,又跑了一轮检查。至于 Redis 为什么会退出,留到晚上打开电脑再查。

手边没电脑(创始人)。 小敏是不懂技术的创始人,正在家庭聚餐,客户说下单页面特别慢。她不会敲命令,就写:“客户说下单很慢,怎么回事?先别改任何东西。”通过检查的命令自己跑完了:负载正常,内存也够,但 df -h 显示数据盘用了 97%。AI 提议删一些旧文件腾空间,这条命令被拦下来等待确认,附着原因。小敏看不懂会删掉什么,就没有批准,30 分钟后它自己过期了。她把 AI 的总结和 df -h 的输出复制下来,删掉服务器地址,发给当初搭服务器的外包。不批准,也是一种答案。

半夜被叫醒(值班成员)。 阿森在一个五人团队里值班,凌晨三点收到告警:一个后台 worker 反复挂掉。他躺在床上先点告警的「📋 查看与处理」看了问题详情,再发 /servers、选中那台服务器、点「🤖 AI 对话」,让 AI 查这个 worker 容器和内存。三轮下来,证据指向 worker 因内存不足被杀,而且内存从昨天发版后就一直在涨。重启策略已经把 worker 拉起来了,队列也在消化。真正的修复,不管是回滚昨天的版本还是调大内存上限,都是大改动,改完还得盯着看。所以阿森在团队群里写了三行(现象、证据、打算怎么改以及怎么撤回),把决定留到早上在电脑前做。反正他会话里的命令也没法交给组长批准:只有发起会话的人才能批准。

AI 排查提示词

短到可以在手机上打完:

[服务名] 从大约 [时间] 开始有问题。先只做检查、不做任何改动:看负载、内存、磁盘、这个服务的状态和最近的报错。告诉我哪些是确认的、哪些是推测。如果需要改动,给出最小的一步和撤回办法,等我确认。

根据证据选择下一步

试用

每月免费 500 次 AI 调用;服务器数量不限。桌面端默认把 SSH 凭证保留在本机;Telegram 里的 AI SSH 模式是例外,需要这台服务器在云端配有 SSH 密钥。

需要帮助理解排查结果?

OpsMate 帮助开发者和运维人员用 AI 辅助排查,由你核对证据。命令输出会发送给云端 AI 分析,请先去除敏感信息。

免费开始 本地凭证桌面端

排障指南