Garudust Agent의 SSH 원격 터미널 — 실제 서버에서 AI가 직접 명령을 수행할 수 있습니다
요약
Garudust Agent v0.13에서 새로운 SSH sandbox 방식이 추가되었습니다. 이를 통해 에이전트가 로컬이나 Docker를 넘어 원격 서버에서 직접 명령을 수행하며 빌드, 배포, 서버 관리 및 IoT 제어를 수행할 수 있습니다.
핵심 포인트
- SSH sandbox를 통한 원격 호스트 명령 실행 지원
- 로컬 환경에 의존성이나 자격 증명을 유지할 필요 없음
- 빌드 및 배포, 서버 상태 모니터링 등 다양한 Use Case 제공
- 승인 게이트를 통한 보안 및 프롬프트 인젝션 방지
이전까지 Garudust Agent는 두 가지 방식으로 터미널 도구 (terminal tool)를 실행할 수 있었습니다 — 로컬 (local) 기기에서 직접 실행하거나, 격리 (isolation)를 위해 Docker 컨테이너를 통해 래핑 (wrap)하는 방식입니다.
v0.13에서 SSH sandbox — 세 번째 방식을 추가했습니다. 이는 모든 명령 (command)을 ssh를 통해 원격 호스트 (remote host)로 전송하여 실행하는 방식입니다.
security:
terminal_sandbox: ssh
ssh_host: "build.example.com"
...
코드를 수정하거나 의존성 (dependency)을 추가할 필요 없이, 이미 존재하는 ssh 바이너리 (binary)를 사용합니다.
왜 유용한가요?
terminal_sandbox: none과 docker의 문제는 둘 다 Garudust가 있는 기기 위에서만 실행된다는 점입니다. 만약 에이전트 (agent)가 노트북에 있는데 프로덕션 서버 (production server)를 관리하고 싶다면 — 그것이 불가능합니다.
SSH sandbox는 이 문제를 직접적으로 해결합니다.
Use Case 1 — 원격 서버에서의 빌드 및 배포 (Build & Deploy)
노트북이 직접 빌드하는 것을 원치 않는 별도의 빌드 서버 (build server)가 있다고 가정해 봅시다:
security:
terminal_sandbox: ssh
ssh_host: "build.internal.example.com"
...
그 후 에이전트와 바로 대화할 수 있습니다:
"release를 빌드하고 /opt/app로 배포해줘"
에이전트는 다음을 실행합니다:
cargo build --release— 빌드 서버 위에서systemctl restart myapp— 빌드 서버 위에서
로컬 기기에는 Rust가 설치되어 있을 필요도 없고, 프로덕션 자격 증명 (prod credentials)도 필요 없으며, 아무것도 유출되지 않습니다.
Use Case 2 — Telegram을 통한 Ops 어시스턴트
Garudust를 Telegram에 연결하여 언제든지 서버 상태를 물어볼 수 있습니다:
사용자: 디스크가 가득 찼나요?
Agent: ✓ terminal: df -h /
/ → 23% used (226 GB / 981 GB)
...
모든 명령은 항상 하드라인 체크 (hardline check) + 승인 게이트 (approval gate)를 거칩니다 — 프롬프트 인젝션 (prompt injection)이 rm -rf를 실행할 방법은 없습니다.
Use Case 3 — LINE을 통한 Raspberry Pi 제어
Pi가 홈 네트워크 (home network)에 있어 인터넷으로 포트 (port)가 노출되지 않은 경우, garudust-server를 Pi와 동일한 기기나 LAN 네트워크 내의 기기에 두고 LINE으로부터 명령을 받으세요:
security:
terminal_sandbox: ssh
ssh_host: "192.168.1.50" # Pi가 LAN 내에 있음
...
"스프링클러를 5분 동안 켜줘"
→ terminal: python3 ~/scripts/sprinkler.py on 300
...
직접 SSH로 접속하는 것처럼 LINE을 통해 명령을 내릴 수 있지만, 터미널을 열 필요는 없습니다.
Use Case 4 — Docker를 사용하지 않는 격리된 환경 (Isolated Environment)
일부 기기에서는 Docker를 사용할 수 없지만 (ARM SBC, 임베디드, 저가형 VPS), 격리(Isolation)가 필요한 경우가 있습니다. 이럴 때는 SSH를 지원하는 VM 또는 LXC 컨테이너를 대신 사용할 수 있습니다:
laptop (garudust) → SSH → sandbox VM → untrusted code 실행
에이전트(Agent)가 실수를 하더라도, 로컬 파일 시스템(Local filesystem)에는 전혀 영향을 주지 않고 즉시 VM 스냅샷(Snapshot)을 복구할 수 있습니다.
자동으로 확보되는 보안 (Security)
SSH 샌드박스(Sandbox)는 단순히 명령어를 원격으로 보내는 것에 그치지 않고, 매번 다음과 같은 보안 강화(Hardening) 조치가 함께 적용됩니다:
| 속성 (Property) | 방법 |
|---|---|
| 대화형 프롬프트(Interactive prompt) 없음 | BatchMode=yes — 키 인증(Key auth) 실패 시 즉시 종료 |
| ... |
지금 바로 시도해 보세요 — 실제 서버가 없어도 됩니다
# 1. 테스트를 위한 SSH 키 생성
ssh-keygen -t ed25519 -f /tmp/test_key -N ""
...
결과 (컨테이너로부터):
- 운영체제: Ubuntu 24.04.4 LTS (Noble Numbat)
- CPU 코어 수: 14개
- 메모리: 7.7 GiB (사용 중 544 MiB, 여유 6.7 GiB)
hostname이 컨테이너 ID를 반환하므로, 명령어가 로컬이 아닌 실제 원격(Remote)에서 실행되었음을 확인할 수 있습니다.
요약
| 모드 (Mode) | 적합한 용도 |
|---|---|
none | 개발 머신(Dev machine), 테스트, 저위험 작업 (Low-risk tasks) |
| ... |
GitHub Releases에서 설치하거나 다음 명령어를 사용하세요:
cargo install garudust
Source: garudust-org/garudust-agent
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기