AI asistentovi můžeš dát užitečný přístup k serveru, aniž bys mu předal svá hesla, ale jen pokud je ten přístup pro tento účel postavený. Root SSH klíč nebo plný API klíč panelu vložený do chatu dává asistentovi - a historii chatu, a komukoli, kdo tu historii čte - úplně všechno. Funguje něco užšího: odkaz nebo spojení, které vidí tvar serveru, ale ne jeho tajné údaje, které umí jen to, co jsi povolil, které samo skončí, když ho přestaneš používat, které můžeš jedním kliknutím odříznout a které po sobě nechává záznam, co udělalo. Pro jediný úkol, který tajný údaj opravdu potřebuje - zapsání hesla do souboru .env - pak správný nástroj hodnotu zapíše a soubor si nikdy nepřečte zpět. To je celý návrh a zbytek článku je detail každé části a toho, kde jsou její hranice.
AI funkce v našem panelu jsme postavili přesně na těchto pravidlech, takže když článek popisuje, jak krok řeší RE:NODE, je to proto, že jde o konkrétní příklad principu. Principy platí u jakéhokoli hostingu.
Co asistent od serveru skutečně potřebuje#
Většina toho, co asistent potřebuje k užitečné práci, tajná není. Aby opravil spadlou aplikaci v Node, potřebuje runtime a verzi, spouštěcí příkaz, port, na který se má server navázat, posledních pár set řádků výstupu konzole a pohled na strom adresářů. Aby připojil databázi, potřebuje hostitele, port, název databáze a název proměnné prostředí, kterou tvůj kód čte. Aby přidal doménu, potřebuje adresu, na kterou má ukazovat záznam A.
Nic z toho nevyžaduje heslo. Heslo je potřeba právě jednou, v okamžiku, kdy se zapisuje do konfiguračního souboru, a potom ho už nikdo - ani člověk, ani model - číst nemusí. Na tomto rozlišení stojí zbytek článku:
- Kontext je to, čím server je: runtime, porty, rozložení souborů, logy, názvy proměnných. Bezpečné ukázat, a právě to dělá z asistenta užitečného pomocníka.
- Tajné údaje jsou hodnoty, které dávají přístup: hesla k databázím, API tokeny, OAuth client secrety, podpisové klíče, přihlašovací údaje k SMTP. Ke čtení je nikdy nepotřebuješ, k zápisu je potřeba je jednou.
- Pravomoc je to, co smí asistent měnit: soubory, konzoli, start a stop. Užitečné, ale tahle část má být dobrovolná a krátkodobá.
Pokud nástroj tyto tři věci nerozliší, musí asistentovi dát buď všechny, nebo žádnou. Proto je "dej mu prostě SSH" špatná odpověď, i když modelu plně důvěřuješ. Širší argument, že agent píše a člověk kontroluje, jsme rozebrali v článku AI coding agenti pro práci se servery.
Kudy se tajné údaje opravdu ztrácejí#
Stojí za to být konkrétní, kudy tajný údaj uniká přes asistenta, protože většina cest nemá s nepoctivým chováním modelu nic společného.
- Přepis konverzace. Cokoli asistent přečte, se stává součástí konverzace. Poskytovatel konverzace ukládá, synchronizují se na další zařízení, sdílejí se s kolegy jako odkazy, vkládají se do ticketů a fotí se na obrazovku pro fóra s nápovědou. Heslo k databázi, které se jednou objevilo ve výsledku nástroje, je teď na všech těchto místech.
- Kontextové soubory. Agenti jako Claude Code a Cursor zapisují poznámky a shrnutí přímo do repozitáře -
CLAUDE.md,AGENTS.md, plánovací soubory. Pokud byl tajný údaj v kontextu, může skončit v commitnutém souboru a odtud v každém klonu. - Cesta tam a zpět. Asistent, který má změnit jeden řádek v
.env, často soubor přečte, upraví v paměti a zapíše celý zpět. Když bylo čtení očištěné, zápis zpět nahradí všechny skutečné hodnoty zástupným textem a aplikaci rozbije. Když očištěné nebylo, všechny hodnoty prošly přepisem konverzace. - Dlouhodobý přístupový údaj. Klíč vložený do chatu v březnu funguje i v říjnu, pokud si někdo nevzpomněl ho rotovat. Nevzpomene si nikdo.
Že se model rozhodne tvé heslo vynést, je z toho všeho nejméně pravděpodobné. Tajné údaje mizí nudnými cestami - logy, historií, soubory. Náš článek o proměnných prostředí a tajných údajích pokrývá obecnou hygienu; následující oddíly se zabývají zavřením těchto čtyř cest, když je čtenářem AI.
Co panel zadržuje#
Na RE:NODE prochází všechno, co asistent dostane přes sdílený odkaz nebo náš MCP endpoint, nejdřív filtrem, který tajné údaje odstraní. Pracuje ve třech vrstvách, protože každá sama by minula věci, které zachytí ostatní.
| Vrstva | Co zachytí |
|---|---|
| Podle názvu proměnné | Cokoli pojmenované jako TOKEN, PASSWORD, KEY, SECRET, AUTH, SALT |
| Podle tvaru | Klíče GitHub, Slack, OpenAI a AWS, JWT, hesla v URL, dlouhé náhodné řetězce |
| Podle hodnoty | Skutečné tajné údaje serveru a hesla k databázím, vymazané z hotového výstupu |
Vrstva podle názvu řeší zřejmý případ: DB_PASSWORD=... ve spouštěcí proměnné ukáže název a hodnotu zadrží. Vrstva podle tvaru řeší token, který se objeví někde nečekaně - stack trace, který vypsal připojovací řetězec s user:password@host, nebo token GitHubu, který do konzole vypsal nedbalý instalační skript. Vrstva podle hodnoty je záchranná síť: panel ví, jaké jsou skutečné tajné údaje tohoto serveru, takže v hotovém výstupu hledá právě tyto řetězce a odstraní je, ať se objeví pod jakýmkoli názvem.
Hesla k databázím zvlášť nejsou ve výstupu nikdy. Asistent dostane hostitele, port, název databáze a uživatele, což stačí k napsání připojovacího kódu a názvu proměnné, ze které má číst, a heslo na místo dáš ty sám nebo přes níže popsaný nástroj jen pro zápis.
Říkáme to otevřeně, protože to o sobě říká i kód. Tři vrstvy dělají únik mnohem méně pravděpodobným, ale ne nemožným, a dodavatel, který tvrdí opak, to netestoval na skutečném výstupu konzole.
Čtení má také záměrnou mezeru: výchozí sdílený odkaz ukazuje výpisy adresářů, ale ne obsah souborů. Asistent vidí, že config/database.php existuje; nepřečte ho, dokud mu nedáš odkaz, který smí jednat, a i potom se čtení vrací přes stejný filtr.
Zápis tajného údaje bez jeho čtení: set_env#
Problém cesty tam a zpět má čisté řešení: sloučení udělat na straně serveru a soubor asistentovi vůbec neposílat. Naše nástroje MCP obsahují přesně pro tohle set_env. Přijme cestu k souboru .env, sadu klíčů k nastavení a seznam klíčů k odstranění. Panel soubor přečte sám, pojmenované řádky nahradí nebo připojí, každý další bajt nechá, kde byl, soubor zapíše zpět a vrátí jen názvy klíčů, kterých se dotkl.
Volání od asistenta vypadá takto:
{ "server": "1a2b3c4d", "path": "/.env", "set": { "DATABASE_URL": "postgres://app:the-real-password@db-host:5432/app", "SESSION_SECRET": "a-long-random-string" }, "unset": ["OLD_API_KEY"]}A zpět přijde nanejvýš tohle:
/.env - updated: DATABASE_URL; added: SESSION_SECRET; removed: OLD_API_KEY.Values are not echoed. Restart the server for the app to read them.Podrobnosti, které z něj dělají bezpečný nástroj, a ne jen pohodlný:
- Je jen pro zápis z principu. Neexistuje režim, ve kterém by vrátil hodnotu, takže není co špatně nastavit.
- Upravuje jen soubory pojmenované `.env` nebo `.env.něco`. Všechno ostatní jde přes běžné nástroje pro soubory.
- Ostatní řádky zůstávají nedotčené. Komentáře, pořadí, prázdné řádky i konce řádků zůstanou, jak byly. U klíče, který se objevuje dvakrát, se nahradí každý výskyt, protože ten, který tvůj loader respektuje, musí mít novou hodnotu.
- Hodnoty jsou jednořádkové. Hodnota s odřádkováním se odmítne, místo aby tiše rozdělila soubor.
- Existuje jen na odkazech, které smí jednat. Odkaz pro čtení nezapíše nic, ani
.env.
Jedno upřímné upozornění. Pokud heslo napíšeš do chatu, aby ho asistent mohl předat nástroji set_env, je heslo v přepisu, protože jsi ho tam dal ty. set_env brání úniku ostatních tajných údajů ze souboru a brání tomu, aby je zápis zpět zničil; to, co jsi napsal, nemůže odeslat zpátky. Čistší postup pro cennější přístupový údaj je nechat asistenta nastavit všechny netajné klíče a to jedno heslo doplnit sám ve správci souborů, nebo hodnotu vygenerovat na serveru a nikomu ji neukázat.
# Set by the assistant through set_env - safe to discussNODE_ENV=productionPORT=25601DATABASE_HOST=db-hostDATABASE_NAME=app# Added by hand in the file manager - never in a chatDATABASE_PASSWORD=Port a hostitel výše jsou zástupné hodnoty; použij ty, které panel ukazuje pro tvůj server.
Rozsahy: co odkaz smí a nesmí#
Přístup má být to nejmenší, čím se úkol dá splnit. Na RE:NODE existují dva druhy sdílených odkazů, vytvářejí se tlačítkem Connect AI v liště nad konzolí a druh závisí na tom, k čemu jsi řekl, že asistent slouží.
| Odkaz | Smí | Výchozí |
|---|---|---|
| Read | Kontext serveru, zadání úkolů, konec konzole, výpisy adresářů | Ano |
| Can act | Vše výše plus start, stop, restart, kill, vstup do konzole a úpravy souborů | Jen pro "Manage this server" |
Volba General, Set up a new project, Fix my repository, Connect a database nebo Add a domain vytvoří odkaz pro čtení. Jen "Manage this server" vytvoří odkaz, který smí jednat. "Server won't start" odkaz nevytvoří vůbec: zkopíruje hotový prompt s koncem konzole, což k diagnóze pádu často stačí.
Některé věci nejsou dostupné přes žádný odkaz, ať je jakéhokoli druhu:
- smazání, přejmenování nebo přeinstalování serveru
- změny spouštěcího příkazu a proměnných
- databáze a jejich hesla
- zálohy a plány úloh
- uživatelé a subuživatelé
- údaje k SFTP a API klíče
Zápisy přes odkaz jsou jen textové, nanejvýš 1 MB na soubor a nikdy uvnitř .git/. Každý odkaz je omezen na 60 požadavků za minutu, 20 akcí za minutu a 6 akcí napájení za minutu, což je štědré pro asistenta, který dělá skutečnou práci, a tvrdá brzda pro toho, kdo uvízl ve smyčce a restartuje ti server.
Pokud chceš asistenta raději připojit k účtu, než vkládat odkaz, panel má hostovaný endpoint MCP s přihlášením přes OAuth 2.1. Přidáš URL a jednou schválíš na stránce se souhlasem:
$ claude mcp add --transport http renode https://panel.renode.space/api/client/mcpNa stránce se souhlasem vybereš, které servery (všechny tvoje, nebo výběr) a úroveň: Files (čtení a úprava souborů, konzole) nebo Manage (to plus start, stop a restart). Databáze, zálohy, plány úloh, uživatelé, spuštění a nastavení se nenabízejí nikdy. Přístupové tokeny platí hodinu; refresh tokeny 30 dní a prodlužují se používáním. Opakované použití refresh tokenu zruší celé oprávnění, takže ukradený token, který se použije poté, co ho už použil skutečný klient, zničí sám sebe. Postavili jsme to a otestovali s Claude Code a vlastními konektory Claude.ai; ostatní klienti, kteří mluví vzdáleným MCP, by měli fungovat, ale konkrétně jsme je netestovali.
Stejné uvažování o nejmenších oprávněních platí pro lidi a model panelu pro ně je v článku subuživatelé a nejmenší oprávnění.
Expirace a rotace#
Obvyklé selhání přístupových tokenů není, že je někdo ukradne první den. Je to, že jsou pořád platné dvousté den. Proto se u sdílených odkazů neptáme na dobu platnosti a nemusíš je mazat. Vyprší samy:
| Odkaz | Vypršení při nečinnosti | Pevný strop |
|---|---|---|
| Read | 7 dní po posledním použití | 90 dní od vytvoření |
| Can act | 24 hodin po posledním použití | 30 dní od vytvoření |
Každé použití posune vypršení při nečinnosti dopředu, takže odkaz, který asistent aktivně používá, dál funguje, a ten, na který jsi zapomněl, zanikne do týdne, nebo do jednoho dne, pokud mohl něco měnit. Strop znamená, že skončí i odkaz v neustálém používání.
Rotace funguje stejně. Vytvoření nového odkazu pro stejný server a stejný účel nahradí předchozí; nemusíš nejdřív hledat a mazat starý. Server drží nanejvýš pět aktivních odkazů, z nichž dva smějí jednat, a po překročení se nejstarší vyřadí.
Samotná URL se ukáže jen jednou. Panel ukládá pouze její hash, takže kopie databáze neobsahuje funkční odkaz. Pokud ji ztratíš, vytvoř nový - starý se zruší ve stejném kroku.
Dvě další pravidla zavírají mezery, které lidé obvykle najdou až později:
- Odkaz je tak dobrý, jak dobrý je přístup jeho tvůrce. Pokud jsi byl subuživatel a tvůj přístup se odebere, každý odkaz, který jsi vytvořil, přestane okamžitě fungovat, při každém načtení.
- Každé odmítnutí je prosté 404. Vypršelo, bylo odvoláno, tvůrce přišel o přístup, server je pozastaven - odpověď je stejná. Kdo odkaz zkouší, nezjistí nic o tom, proč nefunguje, ani zda někdy fungoval.
Odvolání přístupu#
Expirace vyřeší odkazy, na které zapomeneš. Odvolání je pro ty, které chceš pryč hned - vložil jsi odkaz do špatného chatu, kolegovi ukradli notebook, nebo jsi prostě skončil.
Všechno je na jednom místě: Account, potom Connected AI. Vypíše každé připojení OAuth s tlačítkem Disconnect a každý aktivní sdílený odkaz vytvořený tvým účtem, na jakémkoli serveru, s tlačítkem Revoke. U každého odkazu je vidět, kolik akcí provedl a kdy byl naposledy použit, což je nejrychlejší způsob, jak poznat odkaz, který se pořád volá, když sis myslel, že je hotovo.
Odvolaný odkaz odpoví 404 při dalším požadavku. Odpojené připojení OAuth ztratí přístup stejným způsobem. Ani jedno nevyžaduje změnu hesla, ale pokud asistent mohl jednat a nevíš, co udělal, přečti si následující oddíl, než usoudíš, že je tím konec.
Audit toho, co asistent udělal#
Otázka po každém incidentu zní "co se změnilo?" a odpověď musí vzejít ze záznamu, který asistent nenapsal. Na RE:NODE každá akce provedená přes odkaz nebo připojení OAuth zapíše stejnou událost aktivity, jakou zapíše odpovídající tlačítko v panelu. Soubor upravený přes asistenta je řádek server:file.write; restart je událost napájení; volání set_env je zápis souboru, který zaznamená soubor a názvy klíčů, nikdy hodnoty.
Tyto řádky se zaznamenávají pod účtem, který odkaz vytvořil nebo připojení schválil, protože právě jeho pravomoc asistent použil. V zákulisí každý řádek zaznamená i to, jakými dveřmi přišel - sdíleným odkazem, oprávněním OAuth nebo API klíčem - aby je podpora dokázala rozlišit. Vytváření a odvolávání odkazů jsou také události: server:ai.link.create a server:ai.link.revoke. Připojení a odpojení klienta OAuth se zapisují k účtu.
Jak to využít v praxi:
- Předtím, než předáš odkaz, který smí jednat, udělej zálohu na kartě Backups. Protokol aktivity ti řekne, co se změnilo; záloha ti dovolí to vrátit.
- Během nech konzoli otevřenou, abys restarty a chyby viděl, jak se dějí.
- Potom porovnej počet akcí na stránce Connected AI s tím, co jsi čekal. U odkazu, který měl provést tři úpravy a ukazuje čtyřicet akcí, stojí za to přečíst si protokol.
- Pokud je něco špatně, nejdřív odvolej, pak si přečti protokol aktivity za dobu, kdy odkaz platil, a teprve potom obnov nebo oprav.
Protokol nic nezastaví; říká ti, co opravit. Proto stojí vedle rozsahů, limitů a expirace, a nenahrazuje je.
Kontrolní seznam před vložením odkazu#
Celý článek v seznamu, který projdeš za méně než minutu:
- Potřebuje asistent něco měnit? Pokud ne, použij odkaz pro čtení. Většina diagnostiky pravomoc nepotřebuje.
- Pokud musí jednat, nejdřív udělej zálohu.
- Nenechávej hesla v chatu. Nech asistenta nastavit netajné klíče přes
set_enva tajný doplň sám. - Nikdy nevkládej do konverzace heslo k SFTP, API klíč panelu ani heslo k databázi. Pokud ses to stalo, rotuj ho.
- Vlož odkaz jen do konverzace, která ho potřebuje. Sdílená konverzace sdílí i odkaz.
- Až bude úkol hotový, odvolej odkaz na stránce Connected AI.
- Mrkni na protokol aktivity a počet akcí. Pokud tě cokoli překvapí, vyšetři to, než půjdeš dál.
Pokud nasazuješ z GitHubu, je tu ještě jedno místo, kde se tajné údaje schovávají: repozitář. Commitnutý .env oznámí podle názvu kontrola před nasazením na kartě GitHub, aniž by ho panel otevřel. Náš návod na nasazení aplikace v Node z GitHubu popisuje, jak mají hodnoty prostředí na server dorazit místo toho.
FAQ#
Může AI vidět moje heslo k databázi?
Ne přes odkazy panelu ani endpoint MCP. Hesla k databázím jsou ze všech výstupů zadržena a žádný odkaz neotevře nastavení databáze. Asistent dostane hostitele, port, název databáze a uživatele, což stačí k napsání kódu. Pokud heslo napíšeš do chatu sám, je v přepisu jako cokoli jiného, co napíšeš.
Stačí odstraňování tajných údajů k tomu, aby bylo bezpečné sdílet jakýkoli server?
Ne. Únik se tím stává mnohem méně pravděpodobným, ale tajný údaj v nečekaném formátu může proklouznout. Kombinuj to s odkazem jen pro čtení, kde to jde, odvolávej odkazy, když skončíš, a každý přístupový údaj, kterého si v přepisu všimneš, rotuj.
Se kterými asistenty funguje sdílený odkaz?
Sdílený odkaz je URL, takže funguje s každým asistentem, který ji umí načíst - včetně Claude a ChatGPT. Hostovaný endpoint MCP a přihlášení přes OAuth byly postaveny a otestovány s Claude Code a vlastními konektory Claude.ai. Cursor převezme pravidla serveru z kontextových souborů, které integrace GitHubu umí přidat do tvého repozitáře.
Co se stane, když se k mému odkazu dostane někdo jiný?
Dostane přesně to, co odkaz povoluje, v rámci jeho limitů, dokud nevyprší nebo ho neodvoláš. Odkaz pro čtení ukazuje kontext a logy se zadrženými tajnými údaji; odkaz, který smí jednat, umí také upravovat soubory a restartovat server, proto zaniká po 24 hodinách nečinnosti. Odvolej ho na stránce Connected AI a od dalšího požadavku odpovídá 404.
Může odkaz smazat můj server nebo sáhnout na zálohy?
Ne. Mazání, přeinstalování, přejmenování, zálohy, plány úloh, uživatelé, nastavení spuštění a databáze jsou mimo každý odkaz i každou úroveň OAuth, takže k nim vždy potřebuješ být v panelu ty.
Musím staré odkazy mazat?
Ne. Odkazy pro čtení vyprší 7 dní po posledním použití a odkazy, které smí jednat, po 24 hodinách, s pevnými stropy 90 a 30 dní. Nový odkaz pro stejný účel nahradí starý. Odvolání je pořád správný zvyk, když úkol dokončíš.


