---
title: "SSH nativo para los agentes de Comma · Blog de Comma"
description: "El agente se queda en el arnés y llega a tus máquinas por SSH, a través de una dirección pública, de Tailcat o de tu propia tailnet."
url: https://comma.surf/es-419/blog/native-ssh
language: es-419
---

[Volver al blog](https://comma.surf/es-419/blog)

19 de octubre de 2026

# SSH nativo para los agentes de Comma

[Empezar](https://app.comma.surf/) [Leer la documentación](https://comma.surf/es-419/docs/salix/agent-runtimes)

Tu servidor doméstico dejó de completar su copia de seguridad nocturna. Los registros están en el servidor, el servidor está detrás de tu router, y quieres que [Comma](https://comma.surf/es-419/) averigüe qué pasó, no que te dé una lista de comandos para copiar y pegar de un lado a otro. Los agentes de Comma ya pueden trabajar en esa máquina por SSH, sin instalar en ella otro agente de IA.

## El agente vive fuera del sandbox

La mayoría de los agentes en la nube se ejecutan dentro de su sandbox: un contenedor o una VM que contiene el bucle del modelo, las herramientas y los archivos, y que sigue encendido mientras exista el agente. Salix, el arnés distribuido que hay detrás de Comma, separa estas piezas. El bucle del agente se ejecuta en el arnés, fuera de cualquier sandbox, con más de 100 agentes por núcleo de CPU. Una VM en la nube o un dispositivo es solo un lugar donde se ejecutan comandos, y se usa únicamente cuando el trabajo necesita una computadora.

Así que, para trabajar en tu servidor, el agente no se traslada allí. Llama a herramientas SSH nativas desde el arnés:

- `ssh.open`, `ssh.write`, `ssh.read` y `ssh.screen` para una terminal interactiva, incluidos los programas a pantalla completa;
- `ssh.exec` para un solo comando, con stdout, stderr y el código de salida por separado;
- `ssh.list_files`, `ssh.download` y `ssh.upload` para archivos, por SFTP;
- `ssh.close` y `ssh.list` para el ciclo de vida de la conexión.

El agente se autentica con una **clave SSH de Group**: una clave por espacio de trabajo, compartida por sus agentes. `ssh.public_key` la devuelve, y tú la agregas a `~/.ssh/authorized_keys` en la máquina, como harías con cualquier otro cliente SSH.

El arnés puede llegar a tu máquina de tres maneras.

## 1. Una dirección pública

Si la máquina ya tiene un servidor SSH accesible, el agente se conecta a su dirección IP o a su nombre DNS:

json

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

## 2. Tailcat, para una máquina sin dirección pública

Una laptop o un servidor doméstico detrás de NAT a menudo no tiene ninguna dirección a la que el arnés pueda conectarse. [Tailcat](https://github.com/tailscale/tailcat) lo conecta sin puerto de entrada, sin VPN y sin cuenta. Se ejecuta en la máquina, solo abre conexiones salientes y muestra una dirección que empieza con `tc`.

Tailcat también puede hacer de servidor SSH. Ejecútalo con la clave pública del Group:

sh

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

Así obtienes un shell de inicio de sesión, ejecución de comandos y SFTP con la cuenta que ejecuta Tailcat. No necesita `sshd` ni cambia tu configuración de SSH. Si la máquina ya ejecuta OpenSSH, usa `tailcat serve 22` en su lugar, y OpenSSH se encarga del inicio de sesión. Después, envía la dirección al agente:

json

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

## 3. Tu propia red de Tailscale

Si tus máquinas ya están en una tailnet, el espacio de trabajo puede unirse a ella. Conéctalo en la configuración de la app de Comma o pídeselo al agente. Un administrador de la tailnet abre un enlace de inicio de sesión y aprueba el nodo. El nodo usa de forma predeterminada la etiqueta `tag:comma-agent`, así que la política de tu tailnet decide exactamente a qué dispositivos y puertos puede llegar; por ejemplo, solo al puerto 22 del servidor doméstico.

El agente lista los dispositivos con `tailnet.peers` y se conecta por nombre de MagicDNS o por dirección de Tailscale:

json

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

## Confianza y duración

En todas las vías, la primera conexión a un host registra su clave de host. Si una conexión posterior presenta una clave distinta, se rechaza con `host_key_mismatch` y las dos huellas, y el agente te pregunta antes de eliminar la clave antigua con `ssh.known_hosts.remove`.

Cada conexión SSH pertenece a una sola sesión del agente. Se cierra después de 30 minutos sin uso y no sobrevive a un reinicio del agente ni a un despliegue de la plataforma, así que el trabajo largo debe ir en `tmux` o `screen` en la máquina remota. Los comandos tienen límites: `ssh.exec` agota el tiempo a los 60 segundos de forma predeterminada y a los 600 como máximo, y cuando se agota se informa del error, nunca se reintenta automáticamente.

Para la copia de seguridad, podrías pedir: “Lee los registros y revisa el espacio en disco, pero no borres archivos ni cambies la configuración. Primero dime qué encuentras.”

[Volver al blog](https://comma.surf/es-419/blog)

## Try Comma, Now.

[Empezar](https://app.comma.surf/)
