NotionSSH - VPN के बिना भी Notion से remote server को नियंत्रित करें
(github.com/mirseo)डेवलपमेंट करते समय कभी-कभी सुरक्षा कारणों से ऐसी जगहें होती हैं जहाँ किसी खास साइट के लिए http/https तो संभव होता है, लेकिन SSH या RDP खोलने की अनुमति नहीं होती,
इसलिए इसे बनाया।
NotionSSH नाम के इस प्रोजेक्ट में, अगर आप Notion में !(docker ps) जैसा इनपुट देते हैं,
तो उस पेज को मॉनिटर कर रही मशीन पर यह shell में उसे चलाता है और परिणाम वापस देता है। यह एक सरल Rust प्रोग्राम है।
अभी यह शुरुआती वर्ज़न में है, इसलिए इसमें काफ़ी bugs हो सकते हैं।
कृपया इसे ज़्यादा इस्तेमाल करें!
34 टिप्पणियां
जवाब देने में देर होने के लिए माफ़ी चाहता हूँ!
मुझे बहुत खेद है। open source उद्देश्य से ठीक तरह से पहली बार विकसित किए गए प्रोजेक्ट पर ध्यान जाना अच्छी बात है, लेकिन लगता है कि व्यक्तिगत ईमेल और कई अन्य बाहरी SNS आदि पर बहुत ज़्यादा आलोचना मिलने से मैं डर गया था।
इसी वजह से मैंने जल्दबाज़ी में 3 दिनों के लिए प्रोजेक्ट को private कर दिया था। अपने उतावले फ़ैसले से आपको निराश करने के लिए मैं सचमुच माफ़ी चाहता हूँ।
मैं इस घटना को एक अच्छे अनुभव के रूप में लेकर आगे भी open source प्रोजेक्ट को बेहतर बनाता रहूँगा। धन्यवाद!!
guacamoleनाम का एक remote desktop gateway भी है (https://guacamole.apache.org/)जवाब देने में देर होने के लिए माफ़ी चाहता हूँ!
मैंने पहले इसका इस्तेमाल किया था, लेकिन VNC की प्रकृति के कारण स्पीड धीमी थी, इसलिए latency delay का काफ़ी असर पड़ता था।
इसी वजह से मैं इसका विकल्प बनने वाला एक नया तरीका सोच रहा था, और उसी दौरान इसे बना लिया। धन्यवाद!!
2025 | Rust-आधारित SSH ब्रिज, NotionSSH (2.0) का विकास (https://github.com/mirseo/notionSSH) <- अब समर्थित नहीं है और हटा दिया गया है
आपने ऐसा लिख रखा है... बेहतर होगा कि यहाँ जवाब दे दें या खबर को हटा दें।
जवाब देने में देर होने के लिए क्षमा चाहता हूँ!
हाल ही में security issues को लेकर काफी संकेत मिले, इसलिए मैं इस बात पर गंभीरता से सोचने लगा कि उस repository को public रखना जारी रखना चाहिए या नहीं,
और इसी दौरान बिना सूचना दिए उसे private में बदल दिया था।
अपने जल्दबाज़ी भरे फैसले से आपको निराश करने के लिए मैं वास्तव में माफ़ी चाहता हूँ। आगे और बेहतर developer बनने की कोशिश करूँगा। धन्यवाद।
फिलहाल मैं आगे के development schedule पर काम कर रहा हूँ, और इसे फिर से public कर दिया है। अच्छे सुझाव के लिए धन्यवाद!!
कई डेवलपर्स ने security और tips के बारे में अपनी बात कही है, और comments 27 से ज़्यादा हो चुके हैं, इसलिए मुझे लगता है कि यह पोस्ट अब सिर्फ मेरी अकेले की नहीं रह गई है...
लेकिन अगर post delete बटन है, तो आखिरकार यह लेखक की अपनी आज़ादी ही होगी haha
मैंने कभी पोस्ट नहीं किया है, इसलिए सोच रहा हूँ कि delete करना संभव है या नहीं
जवाब देने में देर होने के लिए माफ़ कीजिए!
असल में मैंने पोस्ट हटाने पर विचार किया था, लेकिन delete बटन नहीं मिला, इसलिए लगता है कि यह ऐसे ही पड़ा रह गया…
माफ़ कीजिए
जब सभी ने अपनी राय दी है, तो यह सिर्फ़ मेरी पोस्ट नहीं थी, लेकिन लगता है मैंने अकेले ही बहुत जल्दबाज़ी में फैसला कर लिया
और मैं डर गया था। अभी-अभी मैं इस community से परिचित होना शुरू ही हुआ था, तभी कई platforms और email के ज़रिए लगातार यह कहा गया कि इस project में security risk बहुत बड़ा है.. मानसिक रूप से मैं काफ़ी हिल गया था, माफ़ कीजिए
रिपॉज़िटरी तक पहुंच क्यों नहीं हो रही है?
DeepVan की देरी के लिए माफ़ी चाहता हूँ!!
हाल ही में security issues को लेकर काफी आपत्तियाँ मिलीं, इसलिए इस repository को public रखना जारी रखना चाहिए या नहीं
इसी बात पर मैं गहराई से सोचता रहा, और इसी दौरान बिना कोई सूचना दिए इसे private में बदल दिया था
अपने जल्दबाज़ी भरे फ़ैसले से आपको निराश करने के लिए सच में माफ़ी चाहता हूँ। आगे और बेहतर developer बनने की कोशिश करूँगा। धन्यवाद
अगर SSH इसलिए काम नहीं कर रहा है क्योंकि आप port 22 open नहीं कर सकते, तो SSH port बदलने या Cloudflare Tunnel इस्तेमाल करने का तरीका भी है।
बिलकुल! लेकिन जहाँ मैं काम करता हूँ वहाँ ssh protocol को ही firewall से block किया गया है, इसलिए ऐसा है!
Cf tunnel और tailscale भी आज़माए थे, लेकिन कहा गया कि यह नियमों का उल्लंघन हो सकता है, इसलिए सुरक्षित तरीके से external shell इस्तेमाल कर रहा हूँ :) ( नियमों के बारे में पूछने पर स्कूल की security team ने कहा कि inbound/outbound के लिए सिर्फ 80, 443 के http/https ही approved हैं )
सटीक रूप से कहें तो मंजूरी मिल सकती है, लेकिन प्रक्रिया जटिल है और संबंधित नियम भी पेचीदा हैं, इसलिए मैंने यह तरीका बनाया।
अगर मैं security team में होता, तो इसके बारे में पता चलते ही इसे तुरंत block कर देता...
खासकर तब, जब सही प्रक्रिया मौजूद हो और approval भी मिल सकता हो, फिर भी उसे bypass किया जा रहा हो।
हम इसे Shadow IT कहते हैं।
हाँ, ऐसा हो सकता है
लेकिन इसे बनाने का मकसद वास्तव में इस्तेमाल करना नहीं था, बल्कि यह सोचकर बनाया कि अगर ऐसा कुछ हो तो कैसा रहेगा!
इसलिए इसे एक side project के तौर पर बना लिया!!
सख्ती से देखें तो यह RCE ही है। यह बहुत खतरनाक है। इसमें security के लिए कोई validation नहीं है, है न? सर्वर पर चलने वाला agent समय-समय पर बाहरी page के commands execute कर रहा है। और इस दौरान बाहरी page को बिना validation के पूरी तरह trust किया जा रहा है। Notion API का इस्तेमाल किया जाए तब भी... hmm, यह खतरनाक है।
सुरक्षा फीचर्स जोड़े गए हैं!
CA वेरिफिकेशन - 3-स्टेप कॉन्फ़िगरेशन: 1. CA certificate chain वेरिफिकेशन, 2. DoH DNS वेरिफिकेशन (cf, google), 3. certificate pinning (public key वेरिफिकेशन)
ACL जोड़ा गया (यूज़र ईमेल परमिशन अकाउंट के अनुसार कमांड उपयोग परमिशन कंट्रोल जोड़ा गया + टीम-आधारित परमिशन कंट्रोल जोड़ा गया)
Allow में न होने वाले कमांड डिफ़ॉल्ट रूप से ब्लॉक
उम्.. सच में, यह सही है
अभी यह शुरुआती वर्ज़न है, इसलिए आगे के वर्ज़न में account name के आधार पर execution को block करने वाला फ़ीचर जोड़ने की योजना है
(Notion API से मिले account name और system environment variables के ज़रिए executable accounts को restrict करके permission layer जोड़ने का सोच रहे हैं!! )
लगता है कि security strengthening ही मुख्य फ़ोकस होगा!!
मुझे ठीक से समझ नहीं आ रहा, इसलिए मैं पूछना चाहता हूँ।
इसके अलावा, मुझे लगा कि SSH का उद्देश्य खुद सुरक्षित shell access देना है, इसलिए इस तरीके से shell access अपने-आप में सुरक्षित रहता है, और क्योंकि इसकी संरचना (server - Notion server - user) है, इसलिए मैंने इसे SSH नाम दिया।
हूँ.. हाँ, सही है। दरअसल शुरुआत में यह key exchange आधारित प्रोजेक्ट था, लेकिन development के दौरान मैंने दिशा बदलकर इसे Notion Page का उपयोग करके पढ़ने वाला बना दिया।
क्योंकि यूज़र से key exchange करवाना और authentication कराने का तरीका implementation की दृष्टि से भी कठिन था, और Notion के लिए भी उतना उपयुक्त नहीं था।
(1.0 का अप्रकाशित शुरुआती वर्ज़न - इस वर्ज़न में key exchange तरीका था और यह Discord के लिए था, लेकिन असुविधाजनक होने की वजह से मैं खुद ही इसका उपयोग बंद कर बैठा। password की प्रकृति के कारण इसे Notion पर सार्वजनिक करना भी थोड़ा ठीक नहीं लगा।)
अच्छी राय के लिए धन्यवाद! हो सकता है कि प्रोजेक्ट का नाम बाद में बदल दिया जाए।
यह काफ़ी दिलचस्प प्रोजेक्ट है। क्या आपने Notion चुनने की कोई खास वजह रखी थी?
हाँ! दरअसल मैंने सुना है कि कामकाजी माहौल में Notion का काफी इस्तेमाल होता है, और मेरे मामले में मैं इसे डेटा अपलोड करके व्यवस्थित करने के लिए इस्तेमाल करता था, इसलिए मैंने Notion चुना।
Discord, ईमेल और Slack में code block support के मामले में API उपयोग और monitoring environment के लिहाज़ से असुविधा लग रही थी, इसलिए Notion इस्तेमाल करने की यह भी एक वजह थी!
इसके अलावा, execution results को साझा करने और कंपनी-केंद्रित नज़रिए से सोचें तो, design team आदि को support देते समय कंपनी की IT team जल्दी से problem-solving में शामिल हो सके, इसलिए collaboration के लिए सुविधाजनक Notion को चुना गया।
आपने व्यावहारिक मामलों पर भी विचार किया है। लेकिन SSH access जैसे मामलों में कुछ कनेक्शन केवल बंद नेटवर्क में ही संभव होते हैं, इसलिए इंटरनेट एक्सेस न होने पर शायद Notion का इस्तेमाल नहीं किया जा सकेगा. T_T
अरे… उस हिस्से के बारे में मैंने सोचा ही नहीं था
असल में अगर सर्वर में security महत्वपूर्ण है, तो इस तरीके की बजाय tailscale जैसी चीज़ ज़्यादा सुरक्षित लगेगी!!
अच्छी राय के लिए धन्यवाद!!
अरे.. सुबह स्कूल जाते समय मोबाइल से पोस्ट किया था, इसलिए टाइपो हैं यह भी पता नहीं चला।
सभी का दिन शुभ हो :)
पहले जब मैं HackerSchool में हैकिंग की बस थोड़ी-बहुत कोशिश किया करता था, तब पढ़ता था कि web shell बहुत बड़ा security hole होता है......
अब Notion shell? यह सुनकर तो security प्रभारी बेहोश ही हो जाएगा।
आहाहॉट... सुविधाजनक फीचर्स के साथ उतने ही trade-offs भी आते हैं.. (...)
उम्.. यह शायद किसी तरह के web shell की तरह काम कर सकता है
फिर भी, सुरक्षा के लिहाज़ से logs तो बचते हैं.. अगर logs मौजूद हों, तो शायद इसका पता लगाया जा सके..?
लगता है इसे web shell की तरह भी इस्तेमाल किया जा सकता है, यह मुझे पता नहीं था
बताने के लिए धन्यवाद!!
!(rm -rf /)नवीनतम वर्ज़न में security features जोड़े गए हैं!
ACL जोड़ा गया है, इसलिए security settings वाले माहौल में
rmजैसे commands अब डिफ़ॉल्ट रूप से block किए जाते हैं!अरे... इसके लिए permission restriction लगानी पड़ेगी, है ना..?
शायद अगले version में SecureConfig जोड़ना पड़ सकता है...
बताने के लिए धन्यवाद!!
काफी मज़ेदार आइडिया है haha
https://crates.io/crates/iroh-ssh/0.1.1 ऐसी चीज़ भी है
ओह... यह तो दिलचस्प है?! इसे देखकर मुझे और सुधार करने चाहिए लगते हैं
अभी मैं जो version सोच रहा हूँ, उसमें notionSSH में P2P feature जोड़ने की कोशिश कर रहा था
ठीक समय पर आपने अच्छी चीज़ बताई, धन्यवाद :)