---
title: "SSH native untuk agen Comma · Blog Comma"
description: "Agen tetap berada di harness dan menjangkau mesin Anda lewat SSH, melalui alamat publik, Tailcat, atau tailnet Anda sendiri."
url: https://comma.surf/id/blog/native-ssh
language: id
---

[Kembali ke blog](https://comma.surf/id/blog)

19 Oktober 2026

# SSH native untuk agen Comma

[Mulai](https://app.comma.surf/) [Baca dokumentasi](https://comma.surf/id/docs/salix/agent-runtimes)

Server rumah Anda tidak lagi menyelesaikan backup malamnya. Log-nya ada di server, server-nya ada di balik router Anda, dan Anda ingin [Comma](https://comma.surf/id/) mencari tahu apa yang terjadi, bukan memberi Anda daftar perintah untuk disalin bolak-balik. Kini agen Comma bisa bekerja di mesin itu lewat SSH, tanpa perlu memasang agen AI lain di sana.

## Agen hidup di luar sandbox

Sebagian besar agen cloud berjalan di dalam sandbox-nya: container atau VM yang memuat loop model, tool, dan file, dan tetap menyala selama agen itu ada. Salix, harness terdistribusi di balik Comma, memisahkan semuanya. Loop agen berjalan di harness, di luar sandbox mana pun, dengan lebih dari 100 agen per core CPU. VM cloud atau perangkat hanyalah tempat perintah dijalankan, dan dipakai hanya saat pekerjaan memerlukan komputer.

Jadi, untuk bekerja di server Anda, agen tidak pindah ke sana. Agen memanggil tool SSH native dari harness:

- `ssh.open`, `ssh.write`, `ssh.read`, dan `ssh.screen` untuk terminal interaktif, termasuk program layar penuh;
- `ssh.exec` untuk satu perintah, dengan stdout, stderr, dan exit status yang terpisah;
- `ssh.list_files`, `ssh.download`, dan `ssh.upload` untuk file, lewat SFTP;
- `ssh.close` dan `ssh.list` untuk siklus hidup koneksi.

Agen melakukan autentikasi dengan **Group SSH key**: satu kunci per Workspace, dipakai bersama oleh agen-agennya. `ssh.public_key` mengembalikan kunci itu, dan Anda menambahkannya ke `~/.ssh/authorized_keys` di mesin, sama seperti untuk klien SSH lainnya.

Harness bisa menjangkau mesin Anda dengan tiga cara.

## 1. Alamat publik

Jika mesin sudah punya server SSH yang bisa dijangkau, agen terhubung ke alamat IP atau nama DNS-nya:

json

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

## 2. Tailcat, untuk mesin tanpa alamat publik

Laptop atau server rumah di balik NAT sering tidak punya alamat yang bisa dihubungi harness. [Tailcat](https://github.com/tailscale/tailcat) menghubungkannya tanpa port masuk, VPN, atau akun. Tailcat berjalan di mesin, hanya membuat koneksi keluar, dan menampilkan alamat yang diawali `tc`.

Tailcat juga bisa menjadi server SSH-nya. Jalankan dengan kunci publik Group:

sh

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

Ini memberi login shell, eksekusi perintah, dan SFTP sebagai akun yang menjalankan Tailcat. Tidak perlu `sshd` dan konfigurasi SSH Anda tidak berubah. Jika mesin sudah menjalankan OpenSSH, gunakan `tailcat serve 22`, dan OpenSSH yang menangani login. Lalu kirim alamatnya ke agen:

json

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

## 3. Jaringan Tailscale Anda sendiri

Jika mesin Anda sudah ada di tailnet, Workspace bisa bergabung ke sana. Hubungkan di pengaturan aplikasi Comma, atau minta agen melakukannya. Admin tailnet membuka tautan login dan menyetujui node-nya. Secara default node memakai tag `tag:comma-agent`, sehingga kebijakan tailnet Anda menentukan dengan tepat perangkat dan port mana yang bisa dijangkaunya, misalnya hanya port 22 di server rumah.

Agen menampilkan daftar perangkat dengan `tailnet.peers` dan terhubung lewat nama MagicDNS atau alamat Tailscale:

json

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

## Kepercayaan dan masa hidup

Di setiap jalur, koneksi pertama ke sebuah host mencatat host key-nya. Koneksi berikutnya yang menunjukkan kunci berbeda ditolak dengan `host_key_mismatch` beserta kedua fingerprint, dan agen bertanya kepada Anda sebelum menghapus kunci lama dengan `ssh.known_hosts.remove`.

Satu koneksi SSH milik satu sesi agen. Koneksi tertutup setelah 30 menit tidak dipakai dan tidak bertahan saat agen di-restart atau platform di-deploy, jadi pekerjaan panjang sebaiknya dijalankan di `tmux` atau `screen` di mesin remote. Perintah punya batas: `ssh.exec` timeout setelah 60 detik secara default dan paling lama 600, dan timeout selalu dilaporkan, tidak pernah dicoba ulang otomatis.

Untuk backup tadi, Anda bisa meminta: “Baca log-nya dan periksa ruang disk, tapi jangan hapus file atau mengubah konfigurasi. Beri tahu saya dulu apa yang kamu temukan.”

[Kembali ke blog](https://comma.surf/id/blog)

## Try Comma, Now.

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