---
title: "Comma 智能体原生支持 SSH · Comma 博客"
description: "智能体留在框架中，通过 SSH 连接你的机器：走公网地址、经由 Tailcat，或通过你自己的 tailnet。"
url: https://comma.surf/zh/blog/native-ssh
language: zh-CN
---

[返回博客](https://comma.surf/zh/blog)

2026 年 10 月 19 日

# Comma 智能体原生支持 SSH

[开始使用](https://app.comma.surf/) [阅读文档](https://comma.surf/zh/docs/salix/agent-runtimes)

你家里的服务器已经好几晚没有完成备份了。日志在服务器上，服务器在路由器后面，而你希望 [Comma](https://comma.surf/zh/) 去查清原因，而不是给你一串命令，让你来回复制粘贴。现在，Comma 的智能体可以通过 SSH 直接在这台机器上工作，无需在上面再装一个 AI 智能体。

## 智能体运行在沙箱之外

大多数云端智能体运行在自己的沙箱里：一个容器或虚拟机，装着模型循环、工具和文件，只要智能体还在，它就一直开着。Comma 背后的分布式智能体框架 Salix 把这些拆开了。智能体循环运行在框架中，不在任何沙箱里，每个 CPU 核心能运行 100 多个智能体。云虚拟机或设备只是执行命令的地方，只在工作确实需要一台计算机时才用到。

所以，要在你的服务器上工作，智能体并不需要搬过去。它在框架中调用原生 SSH 工具：

- `ssh.open`、`ssh.write`、`ssh.read` 和 `ssh.screen`：交互式终端，包括全屏程序；
- `ssh.exec`：执行单条命令，stdout、stderr 和退出状态分开返回；
- `ssh.list_files`、`ssh.download` 和 `ssh.upload`：通过 SFTP 读写文件；
- `ssh.close` 和 `ssh.list`：管理连接的生命周期。

智能体使用 **Group SSH 密钥**认证：每个工作区一把密钥，由工作区内的智能体共用。`ssh.public_key` 会返回这把密钥，你把它加到机器上的 `~/.ssh/authorized_keys` 里，和对待其他 SSH 客户端一样。

框架可以通过三种方式连接到你的机器。

## 1. 公网地址

如果机器上已经有一个可访问的 SSH 服务器，智能体就直接连接它的 IP 地址或 DNS 名称：

json

```
{ "tool": "ssh.open", "params": { "host": "203.0.113.10", "user": "deploy" } }
```

## 2. Tailcat：连接没有公网地址的机器

NAT 后面的笔记本电脑或家用服务器，往往没有框架能直接拨通的地址。[Tailcat](https://github.com/tailscale/tailcat) 无需入站端口、VPN 或账号就能把它连上。Tailcat 运行在这台机器上，只发起出站连接，并打印一个以 `tc` 开头的地址。

Tailcat 本身也可以充当 SSH 服务器。用 Group 公钥运行它：

sh

```
tailcat serve --ssh-authorized-keys='ssh-ed25519 AAAA...' ssh
```

这样就能以运行 Tailcat 的账户获得登录 shell、命令执行和 SFTP。它不需要 `sshd`，也不会改动你的 SSH 配置。如果机器上已经运行着 OpenSSH，就改用 `tailcat serve 22`，由 OpenSSH 处理登录。然后把地址发给智能体：

json

```
{ "tool": "ssh.open", "params": { "tailcat": "tc...", "user": "deploy" } }
```

## 3. 你自己的 Tailscale 网络

如果你的机器已经在一个 tailnet 里，工作区可以加入它。你可以在 Comma 应用的设置中连接，也可以让智能体去连接。tailnet 管理员打开登录链接，批准这个节点即可。节点默认带有标签 `tag:comma-agent`，因此它能访问哪些设备和端口，完全由你的 tailnet 策略决定，例如只允许访问家用服务器的 22 端口。

智能体用 `tailnet.peers` 列出设备，再通过 MagicDNS 名称或 Tailscale 地址连接：

json

```
{
  "tool": "ssh.open",
  "params": { "host": "nas.tail1234.ts.net", "via_tailnet": true, "user": "deploy" }
}
```

## 信任与生命周期

无论走哪条路径，首次连接某台主机时都会记录它的主机密钥。之后的连接如果出示了不同的密钥，就会被拒绝，并返回 `host_key_mismatch` 和新旧两个指纹；智能体会先征得你的同意，再用 `ssh.known_hosts.remove` 删除旧密钥。

一个 SSH 连接只属于一个智能体会话。它闲置 30 分钟后关闭，也不会在智能体重启或平台部署后保留，所以耗时较长的工作应放进远程机器上的 `tmux` 或 `screen`。命令都有时限：`ssh.exec` 默认 60 秒超时，最长 600 秒；超时会如实报告，绝不自动重试。

以备份问题为例，你可以这样说：“读一下日志，查看磁盘空间，但不要删除文件，也不要改配置。先把你的发现告诉我。”

[返回博客](https://comma.surf/zh/blog)

## Try Comma, Now.

[开始使用](https://app.comma.surf/)
