---
title: "Comma AI 代理原生支援 SSH · Comma 部落格"
description: "AI 代理留在框架中，透過 SSH 連線到你的機器：走公開位址、經由 Tailcat，或透過你自己的 tailnet。"
url: https://comma.surf/zh-tw/blog/native-ssh
language: zh-TW
---

[返回部落格](https://comma.surf/zh-tw/blog)

2026 年 10 月 19 日

# Comma AI 代理原生支援 SSH

[開始使用](https://app.comma.surf/) [閱讀文件](https://comma.surf/zh-tw/docs/salix/agent-runtimes)

你家裡的伺服器已經好幾晚沒有完成備份了。日誌在伺服器上，伺服器在路由器後面，而你希望 [Comma](https://comma.surf/zh-tw/) 去查清原因，而不是給你一串指令，讓你來回複製貼上。現在，Comma 的 AI 代理可以透過 SSH 直接在這台機器上工作，不必在上面再裝一個 AI 代理。

## AI 代理在沙箱之外執行

大多數雲端 AI 代理都在自己的沙箱裡執行：一個容器或虛擬機器，裝著模型迴圈、工具和檔案，只要 AI 代理還在，它就一直開著。Comma 背後的分散式 AI 代理框架 Salix 把這些拆開了。AI 代理迴圈在框架中執行，不在任何沙箱裡，每個 CPU 核心能執行 100 多個 AI 代理。雲端虛擬機器或裝置只是執行指令的地方，只在工作真的需要一台電腦時才用到。

所以，要在你的伺服器上工作，AI 代理並不需要搬過去。它在框架中呼叫原生 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`：管理連線的生命週期。

AI 代理使用 **Group SSH 金鑰**驗證：每個工作區一把金鑰，由工作區內的 AI 代理共用。`ssh.public_key` 會傳回這把金鑰，你把它加到機器上的 `~/.ssh/authorized_keys` 裡，和對待其他 SSH 用戶端一樣。

框架可以透過三種方式連線到你的機器。

## 1. 公開位址

如果機器上已經有一個連得到的 SSH 伺服器，AI 代理就直接連線到它的 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 處理登入。然後把位址傳給 AI 代理：

json

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

## 3. 你自己的 Tailscale 網路

如果你的機器已經在一個 tailnet 裡，工作區可以加入它。你可以在 Comma 應用程式的設定中連線，也可以請 AI 代理去連線。tailnet 管理員開啟登入連結，核准這個節點即可。節點預設帶有標籤 `tag:comma-agent`，因此它能存取哪些裝置和連接埠，完全由你的 tailnet 政策決定，例如只允許存取家用伺服器的 22 連接埠。

AI 代理用 `tailnet.peers` 列出裝置，再透過 MagicDNS 名稱或 Tailscale 位址連線：

json

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

## 信任與生命週期

無論走哪條路徑，第一次連線到某台主機時都會記錄它的主機金鑰。之後的連線如果出示了不同的金鑰，就會被拒絕，並傳回 `host_key_mismatch` 和新舊兩個指紋；AI 代理會先徵得你的同意，再用 `ssh.known_hosts.remove` 刪除舊金鑰。

一個 SSH 連線只屬於一個 AI 代理工作階段。它閒置 30 分鐘後關閉，也不會在 AI 代理重新啟動或平台部署後保留，所以耗時較長的工作應放進遠端機器上的 `tmux` 或 `screen`。指令都有時限：`ssh.exec` 預設 60 秒逾時，最長 600 秒；逾時會如實回報，絕不自動重試。

以備份問題為例，你可以這樣說：「讀一下日誌，查看磁碟空間，但不要刪除檔案，也不要改設定。先把你的發現告訴我。」

[返回部落格](https://comma.surf/zh-tw/blog)

## Try Comma, Now.

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