更新于
手机 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 完全够用。真正排障时才难受:
键盘。 管道符、横杠、引号、
~、Tab、Ctrl 都藏在额外的按键后面,输入法还会自作主张把journalctl“纠正”掉。命令太长。 一条有用的查日志命令,动辄六十个字符的参数,外加一个必须一字不差的容器名。
输出看不全。 日志一行折成好几行,挤成一窄条;在手机上往回翻 200 行,很容易翻着翻着就找不到刚才那行。
会话容易断。 切个应用、进个隧道,会话可能就没了,里面正在跑的东西也跟着没了。事先配好
tmux或mosh会好一些。私钥放在手机上。 SSH 私钥得存在手机客户端里,而手机是最容易丢的设备。
如果这些你都能接受,手机 SSH 客户端就是个好工具。下面的内容写给更想用一句话说清问题、然后看总结的人。
开始之前:收告警不需要云端凭证,远程 SSH 需要
这是两件事,前提条件不一样:
| 你想做的事 | 需要什么 |
|---|---|
| 在 Telegram 私聊里收服务器告警 | 绑定 Telegram 账号、配置告警。不需要云端凭证。 |
| 从 Telegram 远程 SSH 到服务器(「AI SSH 模式」) | 这台服务器要在 OpsMate 云端配有 SSH 密钥。没有的话,机器人会回复「未配置 SSH 密钥,无法使用 AI SSH 模式」。 |
这就是要付出的代价,直说:OpsMate 桌面端默认把 SSH 凭证留在你自己的电脑上;而 Telegram 机器人跑在云端,想从 Telegram 连到服务器,这台服务器的密钥也得放到云端。要不要这么做,按服务器逐台决定。几个实际的做法:
生产服务器继续只在本机保存凭证;只有那些把密钥放在云端也符合你们安全要求的服务器,才开 Telegram SSH。
给云端单独一把可以单独吊销的密钥,不要用你到处都在用的那把。
服务器上用一个权限有限的账号,只给你愿意在手机上动用的那些权限。
无论怎么选,每台服务器都照样可以在 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 才会分析。
仍然被拦:会出现一条新的「⚠️ 待确认命令」,同样带「✅ 批准」「✏️ 修改」。
完全不允许:机器人回复「命令未通过安全策略」,命令不会执行。
路上做决定时,下面几条很关键:
确认 30 分钟后过期。 被拦下的命令放着不管,不会过一阵子突然自己跑起来;过期后还想执行,就再说一次。
只有发起会话的那个 Telegram 用户能批准。 同事没法替你批准。
批准或修改后的命令跑完,记得发一条消息。 一句“结果说明什么?”就够了,AI 会把留在会话里的输出和你的话一起分析。
按“轮”算,不是按条数算。 你每发一条消息,AI 最多自动跑 3 轮命令,每一轮可以包含多条命令。常见的节奏是:第 1 轮一起看
uptime、df -h、docker ps -a;第 2 轮读看起来有问题的那个容器的日志;第 3 轮去查日志指向的那个东西。跑满 3 轮后,这条消息就不会再触发新的命令了。想继续,就再发一条消息或点一个「▶️」建议,都会开始新的一轮对话,重新从 3 轮算起。先看清被拦下的命令,再点按钮。 原因里写着它为什么被拦。看不懂这条命令,就别批准,回到电脑前再处理。
那些「📟 终端输出」消息就是你的证据,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 已经把这一步建议出来、按钮就在眼前。
什么时候该回到电脑前
遇到下面这些情况,放下手机,打开电脑:
改动比较大。 改配置文件、数据库迁移、升级软件包或内核、改防火墙规则、删数据。你需要看到完整的文件、先做备份、看清改了什么。
要回滚。 回滚会同时牵动代码、配置,可能还有数据库,而且你得先知道迁移能不能回退。这不是凌晨三点在小屏幕上该做的决定。
需要长时间观察。 确认内存不再上涨、报错一小时内没再出现,得让监控图和日志一直开着。聊天记录不是干这个用的。
输出很长,或者一直在绕圈。 发了好几条消息、跑了好几轮还没缩小范围,完整的终端会更快。
需要贴密钥。 永远不要把密码、令牌或密钥打进聊天框。
根本连不上服务器。 SSH 不通时,机器人也连不上,先去云厂商控制台。
回到电脑前,OpsMate 网页端把 SSH 终端和 AI 放在同一个服务器页面,可以接着手机上的进度继续查,见 不会运维也能查日志:终端里的「一句话 AI + 手敲命令」。如果是整站打不开、只有你一个人值班,凌晨两点网站打不开里的前 15 分钟顺序,用手机和用电脑一样适用。
边界
AI SSH 模式以排查为主。 危险命令会被拦截;要不要批准,由你决定。OpsMate 自己会做什么、不会做什么,以官网 常见问题 为准。
AI 的总结是排查起点,不是证明。 动手之前,先用「📟 终端输出」里的原始输出核对。
命令输出会发送给云端 AI 分析。 通过安全检查的命令执行完就直接进入分析,中间不会停下来等你;你批准或修改后执行的命令,输出留在会话里,随你的下一条消息一起分析。所以别让密钥有机会出现在输出里:不要让 AI 跑会打印配置文件、
.env文件或连接串的命令;被拦下的命令如果会打印这些内容,就改掉它或者不批准。输出也会留在你的 Telegram 聊天记录里,转发或截图前先脱敏。从 Telegram 远程 SSH 需要把 SSH 密钥存在云端,只收告警不需要。桌面端默认把凭证留在本机,Telegram SSH 这条路是有意为之的例外。
SSH 连不上的服务器,机器人也连不上。 先走云厂商控制台。
说明性示例
下面三个场景是说明性示例,不是真实客户案例;人名、服务和时间都是虚构的。
在地铁上(独立开发者)。 阿乐一个人在一台 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 排查提示词
短到可以在手机上打完:
[服务名] 从大约 [时间] 开始有问题。先只做检查、不做任何改动:看负载、内存、磁盘、这个服务的状态和最近的报错。告诉我哪些是确认的、哪些是推测。如果需要改动,给出最小的一步和撤回办法,等我确认。
根据证据选择下一步
还没配告警,或者想先看懂告警卡片再动手:人不在电脑前:用 Telegram 收服务器告警,再用自然语言处理。
整站打不开、只有你一个人值班:凌晨两点网站打不开:一个人值班时的前 15 分钟排查顺序。
试用
每月免费 500 次 AI 调用;服务器数量不限。桌面端默认把 SSH 凭证保留在本机;Telegram 里的 AI SSH 模式是例外,需要这台服务器在云端配有 SSH 密钥。
需要帮助理解排查结果?
OpsMate 帮助开发者和运维人员用 AI 辅助排查,由你核对证据。命令输出会发送给云端 AI 分析,请先去除敏感信息。
免费开始 本地凭证桌面端