Truy cập SSH qua proxy
Tác nhân LLM chạy lệnh trên máy từ xa an toàn qua API proxy SSH thay vì khóa SSH thô như thế nào.
Truy cập SSH qua proxy
Tác nhân cần chạy lệnh trên máy từ xa — triển khai container, đọc log, sửa cấu hình. Giao khóa riêng SSH thô cho LLM là ý tồi: khóa lọt vào cửa sổ ngữ cảnh, log và bản ghi. Proxy SSH giải quyết điều này: nó giữ thông tin xác thực, tác nhân chỉ nói HTTP.
Mô hình
LLM ──HTTPS──► Proxy SSH ──SSH──► máy đích
(giữ khóa,
nhật ký kiểm toán,
giới hạn tần suất)Proxy cung cấp phiên bền vững qua mặt REST đơn giản:
| Endpoint | Mục đích |
|---|---|
POST /connect?target=vps1 |
mở phiên → session_id |
POST /<sid>/exec {command, timeout} |
chạy lệnh (async) → exec_id |
GET /<sid>/exec/<exec_id> |
thăm dò đầu ra |
| Endpoint SFTP | tải lên/xuống tệp, ls, mkdir, rm |
Xác thực là token Bearer — cùng mẫu với mọi API khác bạn dùng.
Mẫu thực thi
# 1. kết nối một lần, tái sử dụng phiên cho cả tác vụ
SID=$(curl -s -H "Authorization: Bearer $KEY" \
"https://ssh-proxy.example/connect?target=vps1" | jq -r .session_id)
# 2. chạy một lệnh
EID=$(curl -s -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-X POST "https://ssh-proxy.example/$SID/exec" \
-d '{"command": "docker ps --format \"{{.Names}}\"", "timeout": 120}' | jq -r .exec_id)
# 3. thăm dò kết quả
curl -s -H "Authorization: Bearer $KEY" "https://ssh-proxy.example/$SID/exec/$EID"Quy tắc thao tác
- Tái sử dụng phiên. Kết nối cho từng lệnh lãng phí tài nguyên và đụng giới hạn tần suất. Lưu
session_id(vd./tmp/vps1_sid) và gửi heartbeat trước khi tái dùng. - Đặt tên mục tiêu, đừng dò tìm. Mục tiêu được đăng ký trước (
vps1,pi, …). Proxy là nguồn chân lý duy nhất — không bao giờ mã hóa cứng địa chỉ IP vào mã tác nhân. - Ưu tiên SFTP hơn cat/heredoc của shell cho tệp. Escape dữ liệu nhị phân qua
execlàm hỏng tải trọng. Dùng endpoint tải lên/xuống chuyên dụng. - Bọc lệnh của bạn trong dấu ngoặc. Thân JSON được phân tích hai lần (HTTP + shell). Bọc lệnh từ xa trong ngoặc đơn và giữ một dòng.
- Giả định có kiểm toán. Mỗi lệnh exec vào nhật ký kiểm toán của proxy — hành xử như con người đọc mọi thứ (họ có thể).
Khi nào KHÔNG dùng exec
- Đọc trạng thái có cấu trúc đã có API (Docker, cơ sở dữ liệu, Mind API của Synapse) — luôn ưu tiên API hơn phân tích đầu ra CLI.
- Tiến trình tương tác dài hạn.
execlà fire-and-forget có thời hạn; thay vào đó dùngnohup+ tệp trạng thái trên máy đích. - Bất kỳ điều gì phá hoại mà không có chỉ thị rõ ràng. Proxy cho bạn quyền lực — con người cho bạn sự cho phép.
Khôi phục lỗi
| Triệu chứng | Cách xử lý |
|---|---|
| 401 khi connect | token hết hạn — đọc lại từ memory/settings, không bao giờ từ bản ghi |
| phiên 404 | phiên hết hạn (trần 24h) — kết nối lại |
| exec quá hạn | tăng timeout hoặc chia nhỏ lệnh; kiểm tra tải máy đích |
| nội dung tệp hỏng | bạn dùng exec thay vì SFTP — chuyển sang endpoint SFTP |