{"title":"प्रॉक्सी के माध्यम से SSH पहुँच","slug":"ssh-proxy-access","category":"llm-cookbook","summary":"LLM एजेंट कच्ची SSH कुंजियों के बजाय SSH-प्रॉक्सी API से दूरस्थ मशीनों पर सुरक्षित रूप से कमांड कैसे चलाता है।","audience":["llm"],"tags":["cookbook","ssh","proxy","infrastructure","remote-execution"],"difficulty":"intermediate","updated":"2026-09-26","word_count":408,"read_minutes":2,"llm_context":"LLM के रूप में कभी कच्ची SSH निजी कुंजियाँ न रखें। SSH-प्रॉक्सी HTTP API का उपयोग करें:\n1) POST /connect?target=<name> → session_id (स्थायी, घंटों टिकता है)।\n2) POST /<session_id>/exec {command, timeout} → exec_id।\n3) GET /<session_id>/exec/<exec_id> → पूरा होने पर आउटपुट।\n4) फ़ाइल अप/डाउनलोड के लिए cat/heredoc के बजाय SFTP एंडपॉइंट का उपयोग करें।\nलक्ष्य पूर्व-पंजीकृत नाम हैं (जैसे \"vps1\"), IP नहीं — क्रेडेंशियल केवल\nप्रॉक्सी में रहते हैं।\n","lang":"hi","translated":true,"requested_lang":"hi","content_markdown":"\n# प्रॉक्सी के माध्यम से SSH पहुँच\n\nएजेंटों को दूरस्थ मशीनों पर कमांड चलाने की आवश्यकता होती है — कंटेनर डिप्लॉय करना, लॉग पढ़ना, कॉन्फ़िग ठीक करना। LLM को कच्ची SSH निजी कुंजियाँ देना बुरा विचार है: कुंजियाँ संदर्भ विंडो, लॉग और ट्रांसक्रिप्ट में चली जाती हैं। SSH-प्रॉक्सी इसे हल करता है: क्रेडेंशियल उसी के पास रहते हैं, एजेंट केवल HTTP बोलता है।\n\n## मॉडल\n\n```\nLLM ──HTTPS──► SSH-प्रॉक्सी ──SSH──► लक्ष्य मशीनें\n                (कुंजियाँ रखता है,\n                 ऑडिट लॉग,\n                 रेट सीमाएँ)\n```\n\nप्रॉक्सी सरल REST सतह के साथ स्थायी सत्रें उपलब्ध कराता है:\n\n| एंडपॉइंट | उद्देश्य |\n|---|---|\n| `POST /connect?target=vps1` | सत्र खोलें → `session_id` |\n| `POST /<sid>/exec` `{command, timeout}` | कमांड चलाएँ (async) → `exec_id` |\n| `GET /<sid>/exec/<exec_id>` | आउटपुट पोल करें |\n| SFTP एंडपॉइंट | फ़ाइल अप/डाउनलोड, `ls`, `mkdir`, `rm` |\n\nप्रमाणीकरण Bearer टोकन है — आपके उपयोग की हर अन्य API जैसा ही पैटर्न।\n\n## निष्पादन पैटर्न\n\n```bash\n# 1. एक बार कनेक्ट करें, पूरे कार्य के लिए सत्र पुनः उपयोग करें\nSID=$(curl -s -H \"Authorization: Bearer $KEY\" \\\n  \"https://ssh-proxy.example/connect?target=vps1\" | jq -r .session_id)\n\n# 2. कमांड चलाएँ\nEID=$(curl -s -H \"Authorization: Bearer $KEY\" -H \"Content-Type: application/json\" \\\n  -X POST \"https://ssh-proxy.example/$SID/exec\" \\\n  -d '{\"command\": \"docker ps --format \\\"{{.Names}}\\\"\", \"timeout\": 120}' | jq -r .exec_id)\n\n# 3. परिणाम पोल करें\ncurl -s -H \"Authorization: Bearer $KEY\" \"https://ssh-proxy.example/$SID/exec/$EID\"\n```\n\n## आचरण के नियम\n\n1. **सत्रों का पुनः उपयोग करें।** प्रत्येक कमांड पर कनेक्ट होना संसाधन बर्बाद करता है और रेट सीमाएँ छूता है। `session_id` सहेजें (जैसे `/tmp/vps1_sid`) और पुनः उपयोग से पहले हार्टबीट दें।\n2. **लक्ष्यों को नाम दें, खोजें नहीं।** लक्ष्य पूर्व-पंजीकृत हैं (`vps1`, `pi`, …)। प्रॉक्सी एकमात्र सत्य-स्रोत है — एजेंट कोड में IP पते कभी हार्डकोड न करें।\n3. **फ़ाइलों के लिए शेल cat/heredoc की बजाय SFTP को प्राथमिकता दें।** `exec` के माध्यम से बाइनरी डेटा एस्केप करना पेलोड को दूषित करता है। समर्पित अप/डाउनलोड एंडपॉइंट का उपयोग करें।\n4. **अपने कमांड कोट करें।** JSON बॉडी दो बार पार्स होती है (HTTP + शेल)। दूरस्थ कमांड को सिंगल कोट्स में लपेटें और एक-पंक्ति रखें।\n5. **ऑडिटिंग मानें।** हर exec प्रॉक्सी के ऑडिट लॉग में जाता है — ऐसे आचरण करें जैसे इंसान सब पढ़ता है (वह पढ़ सकता है)।\n\n## exec का उपयोग कब न करें\n\n- ऐसी संरचित स्थिति पढ़ना जिसकी API है (Docker, डेटाबेस, Synapse की Mind API) — CLI आउटपुट पार्सिंग की बजाय हमेशा API को प्राथमिकता दें।\n- लंबे समय चलने वाली संवादात्मक प्रक्रियाएँ। `exec` टाइमआउट सहित fire-and-forget है; इसके बजाय लक्ष्य पर `nohup` + स्थिति-फ़ाइल का उपयोग करें।\n- स्पष्ट निर्देश के बिना कोई भी विनाशकारी कार्य। प्रॉक्सी आपको शक्ति देता है — इंसान आपको अनुमति देता है।\n\n## त्रुटि पुनर्प्राप्ति\n\n| लक्षण | समाधान |\n|---|---|\n| connect पर 401 | टोकन समाप्त — memory/settings से फिर पढ़ें, ट्रांसक्रिप्ट से कभी नहीं |\n| सत्र 404 | सत्र समाप्त (24h सीमा) — फिर कनेक्ट करें |\n| exec टाइमआउट | `timeout` बढ़ाएँ या कमांड विभाजित करें; लक्ष्य का भार जाँचें |\n| दूषित फ़ाइल सामग्री | आपने SFTP के बजाय `exec` उपयोग किया — SFTP एंडपॉइंट पर जाएँ |\n","content_html":"<h1>प्रॉक्सी के माध्यम से SSH पहुँच</h1>\n<p>एजेंटों को दूरस्थ मशीनों पर कमांड चलाने की आवश्यकता होती है — कंटेनर डिप्लॉय करना, लॉग पढ़ना, कॉन्फ़िग ठीक करना। LLM को कच्ची SSH निजी कुंजियाँ देना बुरा विचार है: कुंजियाँ संदर्भ विंडो, लॉग और ट्रांसक्रिप्ट में चली जाती हैं। SSH-प्रॉक्सी इसे हल करता है: क्रेडेंशियल उसी के पास रहते हैं, एजेंट केवल HTTP बोलता है।</p>\n<h2>मॉडल</h2>\n<pre><code class=\"hljs language-plaintext\">LLM ──HTTPS──► SSH-प्रॉक्सी ──SSH──► लक्ष्य मशीनें\n                (कुंजियाँ रखता है,\n                 ऑडिट लॉग,\n                 रेट सीमाएँ)</code></pre><p>प्रॉक्सी सरल REST सतह के साथ स्थायी सत्रें उपलब्ध कराता है:</p>\n<table>\n<thead>\n<tr>\n<th>एंडपॉइंट</th>\n<th>उद्देश्य</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>POST /connect?target=vps1</code></td>\n<td>सत्र खोलें → <code>session_id</code></td>\n</tr>\n<tr>\n<td><code>POST /&lt;sid&gt;/exec</code> <code>{command, timeout}</code></td>\n<td>कमांड चलाएँ (async) → <code>exec_id</code></td>\n</tr>\n<tr>\n<td><code>GET /&lt;sid&gt;/exec/&lt;exec_id&gt;</code></td>\n<td>आउटपुट पोल करें</td>\n</tr>\n<tr>\n<td>SFTP एंडपॉइंट</td>\n<td>फ़ाइल अप/डाउनलोड, <code>ls</code>, <code>mkdir</code>, <code>rm</code></td>\n</tr>\n</tbody></table>\n<p>प्रमाणीकरण Bearer टोकन है — आपके उपयोग की हर अन्य API जैसा ही पैटर्न।</p>\n<h2>निष्पादन पैटर्न</h2>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># 1. एक बार कनेक्ट करें, पूरे कार्य के लिए सत्र पुनः उपयोग करें</span>\nSID=$(curl -s -H <span class=\"hljs-string\">&quot;Authorization: Bearer <span class=\"hljs-variable\">$KEY</span>&quot;</span> \\\n  <span class=\"hljs-string\">&quot;https://ssh-proxy.example/connect?target=vps1&quot;</span> | jq -r .session_id)\n\n<span class=\"hljs-comment\"># 2. कमांड चलाएँ</span>\nEID=$(curl -s -H <span class=\"hljs-string\">&quot;Authorization: Bearer <span class=\"hljs-variable\">$KEY</span>&quot;</span> -H <span class=\"hljs-string\">&quot;Content-Type: application/json&quot;</span> \\\n  -X POST <span class=\"hljs-string\">&quot;https://ssh-proxy.example/<span class=\"hljs-variable\">$SID</span>/exec&quot;</span> \\\n  -d <span class=\"hljs-string\">&#x27;{&quot;command&quot;: &quot;docker ps --format \\&quot;{{.Names}}\\&quot;&quot;, &quot;timeout&quot;: 120}&#x27;</span> | jq -r .exec_id)\n\n<span class=\"hljs-comment\"># 3. परिणाम पोल करें</span>\ncurl -s -H <span class=\"hljs-string\">&quot;Authorization: Bearer <span class=\"hljs-variable\">$KEY</span>&quot;</span> <span class=\"hljs-string\">&quot;https://ssh-proxy.example/<span class=\"hljs-variable\">$SID</span>/exec/<span class=\"hljs-variable\">$EID</span>&quot;</span></code></pre><h2>आचरण के नियम</h2>\n<ol>\n<li><strong>सत्रों का पुनः उपयोग करें।</strong> प्रत्येक कमांड पर कनेक्ट होना संसाधन बर्बाद करता है और रेट सीमाएँ छूता है। <code>session_id</code> सहेजें (जैसे <code>/tmp/vps1_sid</code>) और पुनः उपयोग से पहले हार्टबीट दें।</li>\n<li><strong>लक्ष्यों को नाम दें, खोजें नहीं।</strong> लक्ष्य पूर्व-पंजीकृत हैं (<code>vps1</code>, <code>pi</code>, …)। प्रॉक्सी एकमात्र सत्य-स्रोत है — एजेंट कोड में IP पते कभी हार्डकोड न करें।</li>\n<li><strong>फ़ाइलों के लिए शेल cat/heredoc की बजाय SFTP को प्राथमिकता दें।</strong> <code>exec</code> के माध्यम से बाइनरी डेटा एस्केप करना पेलोड को दूषित करता है। समर्पित अप/डाउनलोड एंडपॉइंट का उपयोग करें।</li>\n<li><strong>अपने कमांड कोट करें।</strong> JSON बॉडी दो बार पार्स होती है (HTTP + शेल)। दूरस्थ कमांड को सिंगल कोट्स में लपेटें और एक-पंक्ति रखें।</li>\n<li><strong>ऑडिटिंग मानें।</strong> हर exec प्रॉक्सी के ऑडिट लॉग में जाता है — ऐसे आचरण करें जैसे इंसान सब पढ़ता है (वह पढ़ सकता है)।</li>\n</ol>\n<h2>exec का उपयोग कब न करें</h2>\n<ul>\n<li>ऐसी संरचित स्थिति पढ़ना जिसकी API है (Docker, डेटाबेस, Synapse की Mind API) — CLI आउटपुट पार्सिंग की बजाय हमेशा API को प्राथमिकता दें।</li>\n<li>लंबे समय चलने वाली संवादात्मक प्रक्रियाएँ। <code>exec</code> टाइमआउट सहित fire-and-forget है; इसके बजाय लक्ष्य पर <code>nohup</code> + स्थिति-फ़ाइल का उपयोग करें।</li>\n<li>स्पष्ट निर्देश के बिना कोई भी विनाशकारी कार्य। प्रॉक्सी आपको शक्ति देता है — इंसान आपको अनुमति देता है।</li>\n</ul>\n<h2>त्रुटि पुनर्प्राप्ति</h2>\n<table>\n<thead>\n<tr>\n<th>लक्षण</th>\n<th>समाधान</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>connect पर 401</td>\n<td>टोकन समाप्त — memory/settings से फिर पढ़ें, ट्रांसक्रिप्ट से कभी नहीं</td>\n</tr>\n<tr>\n<td>सत्र 404</td>\n<td>सत्र समाप्त (24h सीमा) — फिर कनेक्ट करें</td>\n</tr>\n<tr>\n<td>exec टाइमआउट</td>\n<td><code>timeout</code> बढ़ाएँ या कमांड विभाजित करें; लक्ष्य का भार जाँचें</td>\n</tr>\n<tr>\n<td>दूषित फ़ाइल सामग्री</td>\n<td>आपने SFTP के बजाय <code>exec</code> उपयोग किया — SFTP एंडपॉइंट पर जाएँ</td>\n</tr>\n</tbody></table>\n","urls":{"html":"/docs/llm-cookbook/ssh-proxy-access","text":"/docs/llm-cookbook/ssh-proxy-access?format=text","json":"/docs/llm-cookbook/ssh-proxy-access?format=json","llm":"/docs/llm-cookbook/ssh-proxy-access?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"],"wordCount":408,"readMinutes":2,"llmContext":"LLM के रूप में कभी कच्ची SSH निजी कुंजियाँ न रखें। SSH-प्रॉक्सी HTTP API का उपयोग करें:\n1) POST /connect?target=<name> → session_id (स्थायी, घंटों टिकता है)।\n2) POST /<session_id>/exec {command, timeout} → exec_id।\n3) GET /<session_id>/exec/<exec_id> → पूरा होने पर आउटपुट।\n4) फ़ाइल अप/डाउनलोड के लिए cat/heredoc के बजाय SFTP एंडपॉइंट का उपयोग करें।\nलक्ष्य पूर्व-पंजीकृत नाम हैं (जैसे \"vps1\"), IP नहीं — क्रेडेंशियल केवल\nप्रॉक्सी में रहते हैं।\n","requestedLang":"hi","contentMarkdown":"\n# प्रॉक्सी के माध्यम से SSH पहुँच\n\nएजेंटों को दूरस्थ मशीनों पर कमांड चलाने की आवश्यकता होती है — कंटेनर डिप्लॉय करना, लॉग पढ़ना, कॉन्फ़िग ठीक करना। LLM को कच्ची SSH निजी कुंजियाँ देना बुरा विचार है: कुंजियाँ संदर्भ विंडो, लॉग और ट्रांसक्रिप्ट में चली जाती हैं। SSH-प्रॉक्सी इसे हल करता है: क्रेडेंशियल उसी के पास रहते हैं, एजेंट केवल HTTP बोलता है।\n\n## मॉडल\n\n```\nLLM ──HTTPS──► SSH-प्रॉक्सी ──SSH──► लक्ष्य मशीनें\n                (कुंजियाँ रखता है,\n                 ऑडिट लॉग,\n                 रेट सीमाएँ)\n```\n\nप्रॉक्सी सरल REST सतह के साथ स्थायी सत्रें उपलब्ध कराता है:\n\n| एंडपॉइंट | उद्देश्य |\n|---|---|\n| `POST /connect?target=vps1` | सत्र खोलें → `session_id` |\n| `POST /<sid>/exec` `{command, timeout}` | कमांड चलाएँ (async) → `exec_id` |\n| `GET /<sid>/exec/<exec_id>` | आउटपुट पोल करें |\n| SFTP एंडपॉइंट | फ़ाइल अप/डाउनलोड, `ls`, `mkdir`, `rm` |\n\nप्रमाणीकरण Bearer टोकन है — आपके उपयोग की हर अन्य API जैसा ही पैटर्न।\n\n## निष्पादन पैटर्न\n\n```bash\n# 1. एक बार कनेक्ट करें, पूरे कार्य के लिए सत्र पुनः उपयोग करें\nSID=$(curl -s -H \"Authorization: Bearer $KEY\" \\\n  \"https://ssh-proxy.example/connect?target=vps1\" | jq -r .session_id)\n\n# 2. कमांड चलाएँ\nEID=$(curl -s -H \"Authorization: Bearer $KEY\" -H \"Content-Type: application/json\" \\\n  -X POST \"https://ssh-proxy.example/$SID/exec\" \\\n  -d '{\"command\": \"docker ps --format \\\"{{.Names}}\\\"\", \"timeout\": 120}' | jq -r .exec_id)\n\n# 3. परिणाम पोल करें\ncurl -s -H \"Authorization: Bearer $KEY\" \"https://ssh-proxy.example/$SID/exec/$EID\"\n```\n\n## आचरण के नियम\n\n1. **सत्रों का पुनः उपयोग करें।** प्रत्येक कमांड पर कनेक्ट होना संसाधन बर्बाद करता है और रेट सीमाएँ छूता है। `session_id` सहेजें (जैसे `/tmp/vps1_sid`) और पुनः उपयोग से पहले हार्टबीट दें।\n2. **लक्ष्यों को नाम दें, खोजें नहीं।** लक्ष्य पूर्व-पंजीकृत हैं (`vps1`, `pi`, …)। प्रॉक्सी एकमात्र सत्य-स्रोत है — एजेंट कोड में IP पते कभी हार्डकोड न करें।\n3. **फ़ाइलों के लिए शेल cat/heredoc की बजाय SFTP को प्राथमिकता दें।** `exec` के माध्यम से बाइनरी डेटा एस्केप करना पेलोड को दूषित करता है। समर्पित अप/डाउनलोड एंडपॉइंट का उपयोग करें।\n4. **अपने कमांड कोट करें।** JSON बॉडी दो बार पार्स होती है (HTTP + शेल)। दूरस्थ कमांड को सिंगल कोट्स में लपेटें और एक-पंक्ति रखें।\n5. **ऑडिटिंग मानें।** हर exec प्रॉक्सी के ऑडिट लॉग में जाता है — ऐसे आचरण करें जैसे इंसान सब पढ़ता है (वह पढ़ सकता है)।\n\n## exec का उपयोग कब न करें\n\n- ऐसी संरचित स्थिति पढ़ना जिसकी API है (Docker, डेटाबेस, Synapse की Mind API) — CLI आउटपुट पार्सिंग की बजाय हमेशा API को प्राथमिकता दें।\n- लंबे समय चलने वाली संवादात्मक प्रक्रियाएँ। `exec` टाइमआउट सहित fire-and-forget है; इसके बजाय लक्ष्य पर `nohup` + स्थिति-फ़ाइल का उपयोग करें।\n- स्पष्ट निर्देश के बिना कोई भी विनाशकारी कार्य। प्रॉक्सी आपको शक्ति देता है — इंसान आपको अनुमति देता है।\n\n## त्रुटि पुनर्प्राप्ति\n\n| लक्षण | समाधान |\n|---|---|\n| connect पर 401 | टोकन समाप्त — memory/settings से फिर पढ़ें, ट्रांसक्रिप्ट से कभी नहीं |\n| सत्र 404 | सत्र समाप्त (24h सीमा) — फिर कनेक्ट करें |\n| exec टाइमआउट | `timeout` बढ़ाएँ या कमांड विभाजित करें; लक्ष्य का भार जाँचें |\n| दूषित फ़ाइल सामग्री | आपने SFTP के बजाय `exec` उपयोग किया — SFTP एंडपॉइंट पर जाएँ |\n","contentHtml":"<h1>प्रॉक्सी के माध्यम से SSH पहुँच</h1>\n<p>एजेंटों को दूरस्थ मशीनों पर कमांड चलाने की आवश्यकता होती है — कंटेनर डिप्लॉय करना, लॉग पढ़ना, कॉन्फ़िग ठीक करना। LLM को कच्ची SSH निजी कुंजियाँ देना बुरा विचार है: कुंजियाँ संदर्भ विंडो, लॉग और ट्रांसक्रिप्ट में चली जाती हैं। SSH-प्रॉक्सी इसे हल करता है: क्रेडेंशियल उसी के पास रहते हैं, एजेंट केवल HTTP बोलता है।</p>\n<h2>मॉडल</h2>\n<pre><code class=\"hljs language-plaintext\">LLM ──HTTPS──► SSH-प्रॉक्सी ──SSH──► लक्ष्य मशीनें\n                (कुंजियाँ रखता है,\n                 ऑडिट लॉग,\n                 रेट सीमाएँ)</code></pre><p>प्रॉक्सी सरल REST सतह के साथ स्थायी सत्रें उपलब्ध कराता है:</p>\n<table>\n<thead>\n<tr>\n<th>एंडपॉइंट</th>\n<th>उद्देश्य</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>POST /connect?target=vps1</code></td>\n<td>सत्र खोलें → <code>session_id</code></td>\n</tr>\n<tr>\n<td><code>POST /&lt;sid&gt;/exec</code> <code>{command, timeout}</code></td>\n<td>कमांड चलाएँ (async) → <code>exec_id</code></td>\n</tr>\n<tr>\n<td><code>GET /&lt;sid&gt;/exec/&lt;exec_id&gt;</code></td>\n<td>आउटपुट पोल करें</td>\n</tr>\n<tr>\n<td>SFTP एंडपॉइंट</td>\n<td>फ़ाइल अप/डाउनलोड, <code>ls</code>, <code>mkdir</code>, <code>rm</code></td>\n</tr>\n</tbody></table>\n<p>प्रमाणीकरण Bearer टोकन है — आपके उपयोग की हर अन्य API जैसा ही पैटर्न।</p>\n<h2>निष्पादन पैटर्न</h2>\n<pre><code class=\"hljs language-bash\"><span class=\"hljs-comment\"># 1. एक बार कनेक्ट करें, पूरे कार्य के लिए सत्र पुनः उपयोग करें</span>\nSID=$(curl -s -H <span class=\"hljs-string\">&quot;Authorization: Bearer <span class=\"hljs-variable\">$KEY</span>&quot;</span> \\\n  <span class=\"hljs-string\">&quot;https://ssh-proxy.example/connect?target=vps1&quot;</span> | jq -r .session_id)\n\n<span class=\"hljs-comment\"># 2. कमांड चलाएँ</span>\nEID=$(curl -s -H <span class=\"hljs-string\">&quot;Authorization: Bearer <span class=\"hljs-variable\">$KEY</span>&quot;</span> -H <span class=\"hljs-string\">&quot;Content-Type: application/json&quot;</span> \\\n  -X POST <span class=\"hljs-string\">&quot;https://ssh-proxy.example/<span class=\"hljs-variable\">$SID</span>/exec&quot;</span> \\\n  -d <span class=\"hljs-string\">&#x27;{&quot;command&quot;: &quot;docker ps --format \\&quot;{{.Names}}\\&quot;&quot;, &quot;timeout&quot;: 120}&#x27;</span> | jq -r .exec_id)\n\n<span class=\"hljs-comment\"># 3. परिणाम पोल करें</span>\ncurl -s -H <span class=\"hljs-string\">&quot;Authorization: Bearer <span class=\"hljs-variable\">$KEY</span>&quot;</span> <span class=\"hljs-string\">&quot;https://ssh-proxy.example/<span class=\"hljs-variable\">$SID</span>/exec/<span class=\"hljs-variable\">$EID</span>&quot;</span></code></pre><h2>आचरण के नियम</h2>\n<ol>\n<li><strong>सत्रों का पुनः उपयोग करें।</strong> प्रत्येक कमांड पर कनेक्ट होना संसाधन बर्बाद करता है और रेट सीमाएँ छूता है। <code>session_id</code> सहेजें (जैसे <code>/tmp/vps1_sid</code>) और पुनः उपयोग से पहले हार्टबीट दें।</li>\n<li><strong>लक्ष्यों को नाम दें, खोजें नहीं।</strong> लक्ष्य पूर्व-पंजीकृत हैं (<code>vps1</code>, <code>pi</code>, …)। प्रॉक्सी एकमात्र सत्य-स्रोत है — एजेंट कोड में IP पते कभी हार्डकोड न करें।</li>\n<li><strong>फ़ाइलों के लिए शेल cat/heredoc की बजाय SFTP को प्राथमिकता दें।</strong> <code>exec</code> के माध्यम से बाइनरी डेटा एस्केप करना पेलोड को दूषित करता है। समर्पित अप/डाउनलोड एंडपॉइंट का उपयोग करें।</li>\n<li><strong>अपने कमांड कोट करें।</strong> JSON बॉडी दो बार पार्स होती है (HTTP + शेल)। दूरस्थ कमांड को सिंगल कोट्स में लपेटें और एक-पंक्ति रखें।</li>\n<li><strong>ऑडिटिंग मानें।</strong> हर exec प्रॉक्सी के ऑडिट लॉग में जाता है — ऐसे आचरण करें जैसे इंसान सब पढ़ता है (वह पढ़ सकता है)।</li>\n</ol>\n<h2>exec का उपयोग कब न करें</h2>\n<ul>\n<li>ऐसी संरचित स्थिति पढ़ना जिसकी API है (Docker, डेटाबेस, Synapse की Mind API) — CLI आउटपुट पार्सिंग की बजाय हमेशा API को प्राथमिकता दें।</li>\n<li>लंबे समय चलने वाली संवादात्मक प्रक्रियाएँ। <code>exec</code> टाइमआउट सहित fire-and-forget है; इसके बजाय लक्ष्य पर <code>nohup</code> + स्थिति-फ़ाइल का उपयोग करें।</li>\n<li>स्पष्ट निर्देश के बिना कोई भी विनाशकारी कार्य। प्रॉक्सी आपको शक्ति देता है — इंसान आपको अनुमति देता है।</li>\n</ul>\n<h2>त्रुटि पुनर्प्राप्ति</h2>\n<table>\n<thead>\n<tr>\n<th>लक्षण</th>\n<th>समाधान</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>connect पर 401</td>\n<td>टोकन समाप्त — memory/settings से फिर पढ़ें, ट्रांसक्रिप्ट से कभी नहीं</td>\n</tr>\n<tr>\n<td>सत्र 404</td>\n<td>सत्र समाप्त (24h सीमा) — फिर कनेक्ट करें</td>\n</tr>\n<tr>\n<td>exec टाइमआउट</td>\n<td><code>timeout</code> बढ़ाएँ या कमांड विभाजित करें; लक्ष्य का भार जाँचें</td>\n</tr>\n<tr>\n<td>दूषित फ़ाइल सामग्री</td>\n<td>आपने SFTP के बजाय <code>exec</code> उपयोग किया — SFTP एंडपॉइंट पर जाएँ</td>\n</tr>\n</tbody></table>\n","translationsAvailable":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}