আপনার অ্যাপের ভেতরে SSH পারমিশন এরর সমাধান করা

নতুন SSH ব্যবহারকারীরা প্রায়শই একটি বাধার সম্মুখীন হন। তারা এই এররটি দেখতে পান:

WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0644 for 'id_rsa.pem' are too open.

এর সমাধান হলো একটি সহজ টার্মিনাল কমান্ড: chmod 600 id_rsa.pem। ইঞ্জিনিয়ারদের জন্য এটি সহজ। কিন্তু এজেন্সি স্টাফ বা আইটি অপারেটরদের জন্য যারা টার্মিনাল ব্যবহার করেন না, এটি একটি বড় বাধা। এর ফলে ক্রমাগত সাপোর্ট টিকিট তৈরি হয়।

আমরা আমাদের অ্যাপের ভেতরেই এটি সমাধান করার সিদ্ধান্ত নিয়েছি। আমরা পারমিশন স্বয়ংক্রিয়ভাবে শনাক্ত (diagnose) এবং ঠিক করার জন্য একটি সিস্টেম তৈরি করেছি।

সমস্যা পারমিশন খুব বেশি শিথিল হলে OpenSSH একটি প্রাইভেট কি (private key) লোড করতে অস্বীকার করে। যদি অন্য কেউ আপনার কি পড়তে পারে, তবে আপনার নিরাপত্তা বিঘ্নিত হবে। বেশিরভাগ কি-এর ডিফল্ট পারমিশন হলো 0644, যা যে কেউ পড়তে পারে। OpenSSH-এর জন্য 0600 প্রয়োজন।

আমাদের সমাধান এটি সামলানোর জন্য আমরা একটি দুই-ধাপের পদ্ধতি ব্যবহার করি।

Phase 1: Post-failure recovery যদি পারমিশনের কারণে কানেকশন ব্যর্থ হয়, তবে UI-তে একটি 'Fix and retry' বাটন দেখাবে। এটিতে ক্লিক করলে পারমিশন ঠিক হবে এবং কানেকশনটি পুনরায় চেষ্টা করা হবে।

Phase 2: Pre-connection prevention ব্যবহারকারী কানেক্ট করার আগে অ্যাপটি কি-এর পাথ (key path) পরীক্ষা করে দেখে। যদি পারমিশন ভুল থাকে, তবে আমরা একটি সতর্কবার্তা দেখাই। ব্যবহারকারী চাইলে এটি ঠিক করতে পারেন অথবা যেভাবে আছে সেভাবেই কানেক্ট করতে পারেন।

আমরা উইন্ডোজের (Windows) ক্ষেত্রে ভিন্নভাবে কাজ করি। উইন্ডোজ ইউনিক্স পারমিশনের পরিবর্তে ACL ব্যবহার করে। আমাদের কোড প্ল্যাটফর্মটি শনাক্ত করে এবং অ্যাক্সেস ঠিক করার জন্য icacls-এর মতো সঠিক কমান্ডটি চালায়।

আমরা কেন নীরবে স্বয়ংক্রিয়ভাবে ঠিক করি না আমরা স্টার্টআপের সময় স্বয়ংক্রিয়ভাবে কি-গুলো ঠিক করার কথা ভেবেছিলাম। কিন্তু আমরা এই ধারণাটি বাতিল করেছি। কিছু ওয়ার্কফ্লোতে শেয়ার্ড কি-এর জন্য নির্দিষ্ট পারমিশন প্রয়োজন হয়। যদি আমরা জিজ্ঞাসা না করেই সেগুলো পরিবর্তন করি, তবে ব্যবহারকারীর কাজের ধারা (workflow) ব্যাহত হবে।

আমাদের নিয়মটি সহজ: আমরা সবকিছু শনাক্ত করি, কিন্তু ব্যবহারকারী একটি বাটনে ক্লিক করলেই কেবল ফাইল পরিবর্তন করি।

ফলাফল কারিগরি বাধাগুলো কাটিয়ে ওঠার মতো UX তৈরি করলে সাপোর্ট রিকোয়েস্টের পরিমাণ কমে যায়। আমরা ব্যবহারকারীকে দেখাই কী ভুল হয়েছে এবং এক-ক্লিকে সমাধানের সুযোগ দিই। এটি টার্মিনাল ব্যবহারের মানসিক বাধা দূর করে।

উৎস: https://dev.to/susumun/solving-permissions-are-too-open-from-inside-the-app-auto-diagnosing-and-auto-fixing-ssh-key-3j75