সমস্যা সমাধান
এই পৃষ্ঠা Mobile SSH-এর সাধারণ সমস্যা এবং সার্ভার-সাইড SSH সেটিংস বদলানোর আগে চালানো প্রথম পরীক্ষাগুলো কভার করে।
সংযোগ করা যাচ্ছে না
পরীক্ষা করুন:
- ডিভাইসের নেটওয়ার্ক অ্যাক্সেস আছে।
- সার্ভারের হোস্টনাম বা IP ঠিকানা সঠিক।
- SSH পোর্ট সঠিক, সাধারণত
22। - কোনো ফায়ারওয়াল, VPN, ক্যারিয়ার নেটওয়ার্ক বা Wi-Fi নেটওয়ার্ক পোর্ট ব্লক করছে না।
- SSH সার্ভার চলছে এবং আপনার ব্যবহৃত নেটওয়ার্ক থেকে সংযোগ গ্রহণ করছে।
একই হোস্ট অন্য ডিভাইস থেকে কাজ করলে সঠিক হোস্ট, পোর্ট, ব্যবহারকারীর নাম, কী এবং নেটওয়ার্ক পথ তুলনা করুন।
প্রমাণীকরণ ব্যর্থ
পরীক্ষা করুন:
- ব্যবহারকারীর নামের বানান।
- পাসওয়ার্ড বা কী পাসফ্রেজ।
- সার্ভার পাসওয়ার্ড লগইন, কী লগইন, না উভয় অনুমতি দেয়।
- প্রাইভেট কী সার্ভার ব্যবহারকারীর
authorized_keys-এর কোনো পাবলিক কী-এর সাথে মেলে কিনা। - কী ফাইল সম্পূর্ণভাবে ইমপোর্ট হয়েছে কিনা, হেডার ও ফুটার লাইনসহ।
এনক্রিপ্ট করা প্রাইভেট কী-এর জন্য পাসওয়ার্ড/পাসফ্রেজ ফিল্ডে পাসফ্রেজ লিখুন।
প্রাইভেট কী ইমপোর্ট ব্যর্থ
প্রাইভেট কী ইমপোর্ট সিস্টেম ফাইল পিকার ব্যবহার করে। ইমপোর্ট ব্যর্থ হলে:
- নিশ্চিত করুন নির্বাচিত ফাইলটি একটি প্রাইভেট কী, পাবলিক
.pubফাইল নয়। - ফাইলটি বিশ্বস্ত টেক্সট এডিটরে খুলুন এবং যাচাই করুন এতে সম্পূর্ণ কী ব্লক আছে।
- কী-টি প্রাইভেট কী ফিল্ডে হাতে পেস্ট করার চেষ্টা করুন।
- নিশ্চিত করুন কী টাইপ সমর্থিত: Android-এ Ed25519, ECDSA (P-256/384/521) বা RSA; iOS-এ Ed25519 বা ECDSA। DSA (
ssh-dss) কোনোটিতেই কাজ করে না, এবং iOS RSA সমর্থন করে না — এর বদলে একটি Ed25519 কী তৈরি করুন।
কীবোর্ড ইনপুট বিলম্বিত বা পরিবর্তিত
Mobile SSH অটোকারেক্ট ও পূর্বাভাস সাজেশন বন্ধ রেখে কীস্ট্রোক সরাসরি শেলে পাঠায়, তাই কীবোর্ডের রিমোট দিকে পৌঁছানোর আগে টেক্সট পুনর্লিখন করার কথা নয়। আপনার কীবোর্ড তবু ইনপুট বদলালে, নিশ্চিত করুন কোনো সিস্টেম-স্তরের প্রতিস্থাপন বা ক্লিপবোর্ড টুল তা আটকাচ্ছে না, এবং ESC, TAB, CTRL, তীর, HOME, END, PGUP ও PGDN-এর মতো টার্মিনাল কী-এর জন্য অতিরিক্ত কী সারি ব্যবহার করুন।
tmux স্ক্রলিং প্রত্যাশিত নয়
Mobile SSH টার্মিনাল অবস্থার উপর ভিত্তি করে স্ক্রল আচরণ বদলায়। tmux বা অন্যান্য বিকল্প-স্ক্রিন প্রোগ্রামে স্ক্রল অঙ্গভঙ্গি লোকাল ইতিহাস স্ক্রল না করে tmux কপি-মোড কমান্ড পাঠাতে পারে। tmux মাউস মোড সক্ষম থাকলে অ্যাপ মাউস-হুইল এস্কেপ সিকোয়েন্স পাঠায়।
স্ক্রলিং ভুল মনে হলে:
- রিমোট সার্ভারে tmux মাউস মোড সক্ষম বা নিষ্ক্রিয় করার চেষ্টা করুন।
- অতিরিক্ত কী সারির
PGUPওPGDNব্যবহার করুন। - ঘন আউটপুট স্ক্রল করার আগে ফুলস্ক্রিনের জন্য প্যানে ডাবল-ট্যাপ করুন।
- রিমোট টার্মিনালের আকার পুরোনো মনে হলে 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 সংযোগ অনির্দিষ্টকাল খোলা রাখা যায় না। একটি ছোট গ্রেস পিরিয়ড দ্রুত অ্যাপ পরিবর্তন কভার করে; এর চেয়ে দীর্ঘ কিছুর জন্য সার্ভার প্রোফাইলে Auto-attach tmux session সক্ষম করুন (বা Eternal Terminal ট্রান্সপোর্ট ব্যবহার করুন) যাতে পুনঃসংযোগ আপনাকে যেখানে ছিলেন সেই একই শেলে ফিরিয়ে নেয়।
ফাইল ট্রান্সফার ফোন ফাইল ব্রাউজ করতে পারছে না
Mobile SSH Android-এ কোনো স্টোরেজ অনুমতি চায় না। এর বদলে লোকাল প্যান সিস্টেমের ফোল্ডার পিকার দিয়ে আপনার দেওয়া একটিমাত্র ফোল্ডার দেখায় — ফাঁকা থাকলে Pick folder দিয়ে একটি ফোল্ডার বেছে নিন। অনুমতিটি টিকে থাকে, তাই এটি একবারের কাজ।
রিমোট ফাইল লোড হলেও লোকাল না হলে SSH সংযোগ ঠিকই আছে, আপনি কেবল এখনও কোনো ফোল্ডারের অনুমতি দেননি।
iOS-এ লোকাল প্যান অ্যাপের ডকুমেন্টস এলাকা দেখায়, এবং আপনি সিস্টেম ডকুমেন্ট ও ফটো পিকারের মাধ্যমে ফাইল যোগ করেন। সেখানকার ডাউনলোডগুলো Files অ্যাপেও On My iPhone-এর নিচে দেখা যায়।
আপলোড বা ডাউনলোড ব্যর্থ
পরীক্ষা করুন:
- SSH সেশন এখনও সংযুক্ত।
- রিমোট ডিরেক্টরি বিদ্যমান।
- রিমোট ব্যবহারকারীর পথ পড়া বা লেখার অনুমতি আছে।
- লোকাল গন্তব্য লেখযোগ্য।
- ডিভাইসে যথেষ্ট খালি জায়গা আছে।
- বড় ট্রান্সফারের জন্য নেটওয়ার্ক স্থিতিশীল।
পোর্ট ফরওয়ার্ড ব্যর্থ
পরীক্ষা করুন:
- লোকাল পোর্ট
1থেকে65535-এর মধ্যে। - লোকাল পোর্ট ইতিমধ্যে ব্যবহৃত নয়।
- টানেল স্ট্রিং
PORTবাLOCAL:REMOTEHOST:REMOTE। - রিমোট হোস্ট ও রিমোট পোর্ট SSH সার্ভার থেকে পৌঁছানো যায়।
- SSH সার্ভার TCP ফরওয়ার্ডিং অনুমতি দেয়।
ডিবাগ লগ
দুই প্ল্যাটফর্ম আলাদা আলাদা জিনিস রেকর্ড করে, তাই আপনার সমস্যার সঙ্গে যেটি মেলে সেটিই বেছে নিন।
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-এ আপনি যা কিছু টাইপ করেছেন তা-ও — প্রকাশ করতে পারে।