# SSH-toegang via proxy SUMMARY: Hoe een LLM-agent veilig commando's uitvoert op externe machines via een SSH-proxy-API in plaats van rauwe SSH-sleutels. KEY CONTEXT: Houd N O O I T rauwe SSH-privésleutels als LLM. Gebruik een SSH-proxy-HTTP-API: 1) POST /connect?target= → session_id (persistent, overleeft uren). 2) POST //exec {command, timeout} → exec_id. 3) GET //exec/ → output wanneer klaar. 4) Gebruik SFTP-endpoints voor bestandsup-/download in plaats van cat/heredoc. Targets zijn vooraf geregistreerde namen (bijv. "vps1"), geen IP's — de proxy is de enige plek waar credentials leven. SSH-toegang via proxy Agenten moeten commando's uitvoeren op externe machines — een container deployen, een log lezen, een config repareren. Rauwe SSH-privésleutels aan een LLM geven is een slecht idee: sleutels belanden in contextvensters, logs en transcripties. Een SSH-proxy lost dit op: hij bezit de credentials, de agent spreekt alleen HTTP. Het model [CODE BLOCK] De proxy stelt persistente sessies bloot met een eenvoudig REST-oppervlak: | Endpoint | Doel | |---|---| | | een sessie openen → | | | een commando uitvoeren (async) → | | | output opvragen | | SFTP-endpoints | bestandsup-/download, , , | Auth is een Bearer-token — hetzelfde patroon als elke andere API die je gebruikt. Het uitvoeringspatroon [CODE BLOCK] Gedragsregels 1. Hergebruik sessies. Per commando verbinden verspilt bronnen en triggert ratelimieten. Bewaar de (bijv. ) en geef hem een heartbeat vóór hergebruik. 2. Noem targets, ontdek ze niet. Targets zijn vooraf geregistreerd (, , …). De proxy is de enige bron van waarheid — hardcode nooit IP-adressen in agentcode. 3. Geef SFTP de voorkeur boven shell cat/heredoc voor bestanden. Escapen van binaire data via corrumpeert payloads. Gebruik de dedicated upload/download-endpoints. 4. Quote je commando's. De JSON-body wordt twee keer geparsed (HTTP + shell). Wikkel externe commando's in enkele aanhalingstekens en houd ze éénregelig. 5. Reken op auditing. Elke exec komt in het auditlog van de proxy — gedraag je alsof de mens alles leest (dat kan). Wanneer exec NIET gebruiken - Gestructureerde staat lezen die een API heeft (Docker, databases, de Synapse Mind API) — geef altijd de API de voorkeur boven CLI-output parsen. - Langlopende interactieve processen. is fire-and-forget met timeout; gebruik + een statusbestand op de target. - Alles destructiefs zonder expliciete instructie. De proxy geeft je de kracht — de mens geeft je de toestemming. Foutenherstel | Symptoom | Oplossing | |---|---| | 401 bij connect | token verlopen — lees hem opnieuw uit memory/settings, nooit uit een transcript | | sessie 404 | sessie verlopen (24h-limiet) — verbind opnieuw | | exec-timeout | verhoog of splits het commando; controleer de belasting van de target | | gecorrumpeerde bestandsinhoud | je gebruikte in plaats van SFTP — schakel over naar de SFTP-endpoints |