समस्या निवारण
यह पृष्ठ Mobile SSH की सामान्य समस्याओं और सर्वर-साइड SSH सेटिंग्स बदलने से पहले चलाई जाने वाली पहली जाँचों को कवर करता है।
कनेक्ट नहीं हो पा रहा
जाँचें:
- डिवाइस के पास नेटवर्क पहुँच है।
- सर्वर का होस्टनाम या IP पता सही है।
- SSH पोर्ट सही है, आमतौर पर
22। - कोई फ़ायरवॉल, VPN, कैरियर नेटवर्क या Wi-Fi नेटवर्क पोर्ट को ब्लॉक नहीं कर रहा।
- SSH सर्वर चल रहा है और आपके उपयोग किए जा रहे नेटवर्क से कनेक्शन स्वीकार करता है।
यदि वही होस्ट किसी अन्य डिवाइस से काम करता है, तो सटीक होस्ट, पोर्ट, उपयोगकर्ता नाम, कुंजी और नेटवर्क पथ की तुलना करें।
सर्वर पहचान पर ध्यान देना ज़रूरी है
दोनों प्लेटफ़ॉर्म पहचान भेजने से पहले SSH सर्वर की पहचान जाँचते हैं। iOS पर नई होस्ट कुंजी के फ़िंगरप्रिंट की पुष्टि और भरोसा करके फिर जुड़ें आवश्यक है। Android पर सेटिंग्स → सामान्य → सुरक्षा → नई SSH पहचान स्वतः स्वीकारें डिफ़ॉल्ट चालू है: पहली साधारण कुंजी सहेजती है और आगे उसी से मिलान होता है। नए फ़िंगरप्रिंट पहले जाँचने के लिए इसे बंद करें।
नई या बदली कुंजी का SHA-256 फ़िंगरप्रिंट विश्वसनीय माध्यम से प्रशासक के साथ मिलाएँ। बदलाव सर्वर बदले जाने या अनपेक्षित सर्वर का संकेत हो सकता है; सत्यापन से पहले पुरानी पहचान न हटाएँ। सेटिंग्स में सहेजी पहचान देखें। वैकल्पिक पते और जंप होस्ट सत्यापन नहीं टालते।
Android सीमित दायरे वाले होस्ट प्रमाणपत्र प्राधिकारी और निरस्तीकरण भी समर्थित करता है। अनजान प्राधिकारी, समाप्त या अमान्य प्रमाणपत्र और निरस्त कुंजियाँ स्वतः पहली स्वीकृति चालू होने पर भी रुकी रहती हैं। iOS में सेटिंग्स → सर्वर पहचान → निरस्त कुंजियाँ आयात करें सीमित दायरे वाली OpenSSH @revoked Ed25519/ECDSA प्रविष्टियाँ लेता है। असमर्थित प्रविष्टि वाला मिश्रित पेस्ट पूरा अस्वीकार होता है; CA प्रविष्टि, प्रमाणपत्र, RSA कुंजी और हैश किए होस्टनाम समर्थित नहीं हैं। नई और दोबारा कनेक्शन पर निरस्तीकरण पुराने भरोसे पर प्राथमिकता लेता है, लेकिन मौजूदा कनेक्शन बंद नहीं करता। पहचान और निरस्तीकरण बैकअप में नहीं जाते। iOS Share Extension से पहले अनजान सर्वर मुख्य ऐप में सत्यापित करें।
जंप होस्ट से नहीं जुड़ पा रहे
हर बास्टियन का पता और पहचान जाँचें; फ़ोन पहले पड़ाव तक पहुँचना चाहिए। अगला होस्ट पिछले सर्वर से पहुँचना चाहिए। बास्टियन को permitopen प्रतिबंधों सहित आगे TCP फ़ॉरवर्ड अनुमति देनी चाहिए। मार्ग SSH हो, लूप न हों और विस्तार के बाद अधिकतम आठ पड़ाव हों।
हटाया या न मिल पाया बास्टियन सीधे कनेक्शन पर नहीं लौटाता। सहेजा मार्ग ठीक करके फिर जुड़ें। Android की स्थिति और लॉगिन इतिहास विफल पड़ाव को अंतिम सर्वर से अलग बताते हैं।
प्रमाणीकरण विफल
जाँचें:
- उपयोगकर्ता नाम की वर्तनी।
- पासवर्ड या कुंजी पासफ़्रेज़।
- सर्वर पासवर्ड लॉगिन, कुंजी लॉगिन, या दोनों की अनुमति देता है या नहीं।
- निजी कुंजी सर्वर उपयोगकर्ता के
authorized_keysमें किसी सार्वजनिक कुंजी से मेल खाती है या नहीं। - कुंजी फ़ाइल पूरी तरह आयात हुई या नहीं, हेडर और फ़ुटर लाइनों सहित।
एन्क्रिप्टेड निजी कुंजियों के लिए, पासवर्ड/पासफ़्रेज़ फ़ील्ड में पासफ़्रेज़ दर्ज करें।
Android पर रिमोट ssh या git के लिए सहेजे सर्वर में SSH एजेंट फ़ॉरवर्ड करें और सर्वर की एजेंट फ़ॉरवर्ड अनुमति चाहिए। केवल सहेजी, उपयोग योग्य कुंजियाँ दी जाती हैं। लंबित अनुमति/अस्वीकृति या सुरक्षा-कुंजी प्रॉम्प्ट उस कनेक्शन का टर्मिनल, फ़ाइल ट्रांसफ़र और सुरंग 30 सेकंड तक रोक सकता है; ऐप या सूचना में जवाब दें।
निजी कुंजी आयात विफल
निजी कुंजी आयात सिस्टम फ़ाइल चयनकर्ता का उपयोग करता है। यदि आयात विफल होता है:
- पुष्टि करें कि चयनित फ़ाइल निजी कुंजी है, सार्वजनिक
.pubफ़ाइल नहीं। - फ़ाइल को किसी विश्वसनीय टेक्स्ट संपादक में खोलें और सत्यापित करें कि उसमें पूर्ण कुंजी ब्लॉक है।
- कुंजी को निजी कुंजी फ़ील्ड में मैन्युअल रूप से चिपकाने का प्रयास करें।
- पुष्टि करें कि कुंजी प्रकार समर्थित है: Android पर Ed25519, ECDSA (P-256/384/521) या RSA; iOS पर Ed25519 या ECDSA। DSA (
ssh-dss) किसी पर भी काम नहीं करता, और iOS RSA का समर्थन नहीं करता — उसके बजाय Ed25519 कुंजी बनाएँ।
Android पर सुरक्षा कुंजी जवाब नहीं दे रही
Android USB या NFC से CTAP2/FIDO2 ed25519-sk और ecdsa-sk पहचान समर्थित करता है। आयातित पहचान फ़ाइल बनाने वाली वही भौतिक कुंजी उपयोग करें। USB में होस्ट समर्थन और अनुमति चाहिए; NFC चालू हो और पूरा होने तक कुंजी फ़ोन से लगी रहे। माँगने पर PIN डालें और कुंजी छुएँ।
सर्वर पर OpenSSH 8.2 या नया और चुने sk-* एल्गोरिदम की अनुमति चाहिए। केवल U2F कुंजियाँ और निवासी पहचान खोज समर्थित नहीं हैं। कुंजी खोजते समय लॉगिन समय समाप्त हो सकता है; जुड़ने से पहले तैयार रखें। पृष्ठभूमि अनुरोध पर सुरक्षा-कुंजी सूचना खोलें या ऐप लौटें। iOS हार्डवेयर सुरक्षा-कुंजी प्रमाणीकरण नहीं देता।
कीबोर्ड इनपुट विलंबित या बदला हुआ है
Android कीबोर्ड इनपुट सीधे भेजता है; स्वतः सुधार और अनुमानित सुझाव बंद हैं। iOS में डिक्टेशन और सुझाव डिफ़ॉल्ट चालू है और वर्तमान पंक्ति में आवाज़ तथा सुधार देता है। शेल इनपुट अनपेक्षित बदले तो सेटिंग्स में इसे बंद करें, कीबोर्ड सुझाव भी जाँचें और नया पैन खोलें।
ESC, TAB, CTRL, तीर, HOME, END, PGUP, PGDN के लिए अतिरिक्त कुंजी पंक्ति उपयोग करें। रुका नेटवर्क भी इनपुट रोक सकता है। Android हेडर जवाब नहीं या भेजा नहीं गया दिखाता है; पुनः कनेक्शन में टाइप किया इनपुट हटता है, नए शेल में दोहरता नहीं। कनेक्शन आने दें, प्रॉम्प्ट जाँचें और केवल ज़रूरी टेक्स्ट फिर लिखें।
tmux स्क्रॉलिंग अपेक्षा के अनुरूप नहीं
Mobile SSH टर्मिनल स्थिति के आधार पर स्क्रॉल व्यवहार बदलता है। tmux या अन्य वैकल्पिक-स्क्रीन प्रोग्रामों में, स्क्रॉल इशारे लोकल इतिहास स्क्रॉल करने के बजाय tmux कॉपी-मोड कमांड भेज सकते हैं। यदि tmux माउस मोड सक्षम है, तो ऐप माउस-व्हील एस्केप अनुक्रम भेजता है।
यदि स्क्रॉलिंग गलत लगती है:
- रिमोट सर्वर पर tmux माउस मोड सक्षम या अक्षम करने का प्रयास करें।
- अतिरिक्त कुंजी पंक्ति से
PGUPऔरPGDNउपयोग करें। - घने आउटपुट को स्क्रॉल करने से पहले फ़ुल-स्क्रीन के लिए पैन पर डबल-टैप करें।
- यदि रिमोट टर्मिनल आकार पुराना दिखे तो tmux से डिटैच करके पुनः अटैच करें।
Android पर मानक कॉपी-मोड संकेत दिखाई दे तो नीचे स्क्रॉल करना ऐप द्वारा नियंत्रित tmux कॉपी मोड छोड़ता है। बिना संकेत के कस्टम या विभाजित लेआउट में हाथ से निकलना पड़ सकता है। सेशन बदलते समय नाम के साथ मैनेजर का चुना सर्वर और tmux सॉकेट भी जाँचें।
स्क्रीन लॉक के बाद सेशन टूट गया
Android पर, Mobile SSH डिस्कनेक्ट कम करने के लिए keepalive, फ़ोरग्राउंड सेवा, वेक लॉक, Wi-Fi लॉक और पुनः कनेक्ट प्रयासों का उपयोग करता है। फिर भी Android बैटरी नीतियाँ बैकग्राउंड कार्य रोक सकती हैं।
जाँचें:
- यदि आपका डिवाइस बैकग्राउंड ऐप्स को आक्रामक रूप से रोकता है तो Mobile SSH के लिए बैटरी अनुकूलन अक्षम करें।
- लंबे सेशन के दौरान Wi-Fi या मोबाइल डेटा स्थिर रखें।
- अनलॉक के बाद Mobile SSH फिर से खोलें और Active Sessions टैप करें।
- यदि आप चाहते हैं कि ऐप को स्वाइप कर हटा देने पर भी शेल चलते रहें, तो जाँचें कि Settings में Keep sessions running in background चालू है।
- यदि सर्वर ने SSH सेशन डिस्कनेक्ट किया, तो होम स्क्रीन से पुनः कनेक्ट करें — Continue बताता है कि क्या अब भी चालू है, और Tmux sessions बताता है कि सर्वर पर क्या प्रतीक्षा कर रहा है।
iOS ऐप को पृष्ठभूमि में निलंबित करता है; ऐप बदलने या स्क्रीन लॉक करने के बाद साधारण SSH अनिश्चित समय तक नहीं रहता। थोड़ी मोहलत छोटे बदलाव संभालती है। सर्वर का जुड़ने पर अटैच करें tmux, Herdr या Zellij पर रखें या Eternal Terminal उपयोग करें। मल्टिप्लेक्सर सर्वर पर चलता रहना चाहिए; Eternal Terminal जंप मार्ग नहीं ले सकता।
फ़ाइल ट्रांसफ़र फ़ोन फ़ाइलें ब्राउज़ नहीं कर पा रहा
Mobile SSH, Android पर कोई स्टोरेज अनुमति नहीं माँगता। इसके बजाय लोकल पैन वही एक फ़ोल्डर दिखाता है जिसकी अनुमति आप सिस्टम फ़ोल्डर चयनकर्ता से देते हैं — यदि वह खाली है, तो Pick folder से कोई फ़ोल्डर चुनें। यह अनुमति बनी रहती है, इसलिए यह एक ही बार का काम है।
यदि रिमोट फ़ाइलें लोड होती हैं लेकिन लोकल नहीं, तो SSH कनेक्शन ठीक है और बात बस इतनी है कि आपने अभी तक कोई फ़ोल्डर नहीं दिया।
iOS का स्थानीय पैन ऐप के दस्तावेज़ क्षेत्र से शुरू होता है। मेरा फ़ोन → स्थानीय फ़ोल्डर चुनें दूसरा Files फ़ोल्डर याद रखता है। प्रदाता या अनुमति न मिले तो फिर चुनें या ऐप फ़ोल्डर पर लौटें। ऐप के डाउनलोड मेरे iPhone पर और बाहरी फ़ाइलें अपने प्रदाता में रहती हैं। फ़ोल्डर अनुमतियाँ बैकअप से नहीं जातीं।
अपलोड या डाउनलोड विफल
जाँचें:
- SSH सेशन अभी भी कनेक्ट है।
- रिमोट डायरेक्टरी मौजूद है।
- रिमोट उपयोगकर्ता को पथ पढ़ने या लिखने की अनुमति है।
- लोकल गंतव्य लिखने योग्य है।
- डिवाइस पर पर्याप्त खाली स्थान है।
- बड़े ट्रांसफ़र के लिए नेटवर्क स्थिर है।
पोर्ट फ़ॉरवर्ड विफल
जाँचें:
- लोकल पोर्ट
1और65535के बीच है। - लोकल पोर्ट पहले से उपयोग में नहीं है।
- टनल स्ट्रिंग
PORTयाLOCAL:REMOTEHOST:REMOTEहै। - रिमोट होस्ट और रिमोट पोर्ट SSH सर्वर से पहुँच योग्य हैं।
- SSH सर्वर TCP फ़ॉरवर्डिंग की अनुमति देता है।
Android पर VPN या प्रॉक्सी ट्रैफ़िक नहीं ले जा रहा
- VPN से सही प्रोफ़ाइल शुरू करके Android की अनुमति दें। डिवाइस VPN पुराना VPN बदलता है; दूसरा VPN रखना हो तो स्थानीय SOCKS5 प्रॉक्सी लें।
- SSH VPN में सहेजा सर्वर, जंप होस्ट, सर्वर पहचान, TCP फ़ॉरवर्ड अनुमति तथा ऐप-वेबसाइट चयन जाँचें। SSH TCP और DNS लेता है, सामान्य UDP नहीं।
- SOCKS5 क्लाइंट में लूपबैक पता, पोर्ट, पासवर्ड और रिमोट DNS दें। प्रॉक्सी चलने से सभी ऐप स्वतः नहीं मुड़ते।
- WireGuard में हैंडशेक, कुंजियाँ,
AllowedIPsऔर DNS जाँचें। Shadowsocks में सिफ़र/पासवर्ड मिलाएँ और DNS के लिए UDP रिले जाँचें। - OpenVPN में समर्थित स्वयंपूर्ण प्रोफ़ाइल, CA/सर्वर पहचान और पहचान विवरण जाँचें; पूरी सुरंग के लिए VPN DNS दें। प्रमाणीकरण या प्रमाणपत्र त्रुटि सुधारकर प्रोफ़ाइल रोकें और फिर शुरू करें।
SSH VPN, Shadowsocks और OpenVPN पुनः कनेक्शन में पकड़ा ट्रैफ़िक सीधे भेजने के बजाय रोक सकते हैं। रोकने पर यह सुरक्षा खत्म होती है। VPN अपने सर्वर के प्रदाता या प्रशासक के इंटरनेट प्रतिबंध नहीं हटा सकता।
बैकअप से सब कुछ बहाल नहीं हुआ
आयात पूर्वावलोकन और मिलाएँ या बदलें चुनाव देखें। पुराने या आंशिक बैकअप में गायब भाग अपरिवर्तित रहते हैं। पूरे बैकअप में समर्थित ऐप सेटिंग्स और Android पर VPN/प्रॉक्सी प्रोफ़ाइल शामिल हैं। सभी प्लेटफ़ॉर्म-विशेष वस्तुएँ iOS में नहीं जातीं; पुराने ऐप नए पूरे-बैकअप प्रारूप अस्वीकार कर सकते हैं।
होस्ट पहचान, सिस्टम अनुमति और चुना फ़ोल्डर इसी डिवाइस पर रहते हैं। नए डिवाइस पर होस्ट सत्यापित और फ़ोल्डर/VPN अनुमति दें। हार्डवेयर पहचान के लिए भौतिक कुंजी चाहिए। प्रोफ़ाइल आयात करने से VPN शुरू नहीं होता; शुरू करने से पहले बहाल प्रोफ़ाइल देखें।
रिमोट डेस्कटॉप अनुपलब्ध है या आकार नहीं बदलता
जुड़े SSH सेशन से डेस्कटॉप खोलें। सर्वर की स्थानीय TCP फ़ॉरवर्ड अनुमति जाँचें। Linux पर गायब पैकेज के संदेश के अनुसार डेस्कटॉप/VNC सॉफ़्टवेयर स्थापित करें। Android Wayland कंसोल मिरर नहीं कर सकता; समर्थित वर्चुअल डेस्कटॉप उपयोग करें।
Mac की सेटिंग्स में Screen Sharing चालू करें। Android Mac खाते से प्रमाणीकरण करता है; iOS के लिए Screen Sharing में सामान्य VNC पासवर्ड पहुँच चालू होनी चाहिए और Mac खाते के बजाय स्क्रीन-शेयरिंग पासवर्ड चाहिए। दर्शक मौजूदा Mac स्क्रीन दिखाता है; रिज़ॉल्यूशन Mac पर बदलना पड़ सकता है। वर्चुअल डेस्कटॉप का लाइव आकार सर्वर समर्थन देने पर ही बदलता है। ऐप द्वारा बने डेस्कटॉप का पुनः शुरू होना पुष्टि माँगता है और उसके प्रोग्राम बंद करता है। दर्शक छोड़ने पर रिमोट डेस्कटॉप चलता रहता है।
डीबग लॉग
दोनों प्लेटफ़ॉर्म अलग-अलग चीज़ें रिकॉर्ड करते हैं, इसलिए वही चुनें जो आपकी समस्या से मेल खाता हो।
Android — टर्मिनल और रेंडरिंग। Settings → Debugging → Show Debug and Logs buttons सक्षम करें, फिर स्टार्ट स्क्रीन पर दिखने वाले Debug बटन का उपयोग करें। यह टर्मिनल घटनाएँ, SSH डेटा आकार, टच इनपुट, आकार-बदलाव व्यवहार और टनल जीवनचक्र रिकॉर्ड करता है। रिकॉर्डिंग शुरू करने से पहले यह चेतावनी देता है कि इसमें आपकी टाइप की गई हर कुंजी शामिल है, पासवर्ड भी। रोकने पर यह एक संग्रह आपके Downloads फ़ोल्डर में लिख देता है।
iOS — कनेक्शन और पुनः कनेक्शन। Settings → Diagnostics → Record debug log चालू करें। यह डायल किया गया हर पता और उसकी विफलता का कारण, पुनः कनेक्शन के प्रयास और उनका बैकऑफ़, टूटे हुए कनेक्शन, “peer stopped answering keepalives”, नेटवर्क परिवर्तन, तथा tmux कमांड और उनकी त्रुटियाँ रिकॉर्ड करता है। Settings में पंक्तियों की गिनती लाइव दिखती है ताकि आप पुष्टि कर सकें कि रिकॉर्डिंग चल रही है, और Export Debug Log उसे एक टेक्स्ट फ़ाइल के रूप में साझा करता है। यह मेमोरी में रहता है और केवल ऐप के मौजूदा सेशन को कवर करता है।
साझा करने से पहले किसी भी डीबग लॉग या संग्रह की समीक्षा करें। ये समस्या निवारण के लिए हैं और सर्वर नाम, पते, समय या अन्य परिवेश विवरण प्रकट कर सकते हैं — और Android पर, वह सब जो आपने टाइप किया।