যদি macOS টার্মিনাল “UNPROTECTED PRIVATE KEY FILE” দেখায় বা বলে যে আপনার SSH কী অতিরিক্ত উন্মুক্ত (too accessible), তবে প্রাইভেট কী-র অ্যাক্সেস সীমিত করুন এবং .ssh ডিরেক্টরিটি পরীক্ষা করুন। টার্মিনাল খুলুন এবং আপনি বাস্তবে যে কী ফাইলটি ব্যবহার করেন সেটিতে chmod 600 চালান। এটি ফাইলটিকে কেবল আপনার অ্যাকাউন্টের দ্বারাই পড়ার এবং লেখার যোগ্য করে তোলে; অন্যান্য ব্যবহারকারীরা অ্যাক্সেস করতে পারে এমন প্রাইভেট কী ফাইলগুলিকে SSH উপেক্ষা করে। OpenBSD ssh(1) ম্যানুয়াল
প্রাইভেট কী-র পারমিশন ঠিক করুন
প্রথমে কী ফাইলটি শনাক্ত করুন। SSH-এর সাধারণ ডিফল্ট প্রাইভেট কী-র নামের মধ্যে id_ed25519 এবং id_rsa অন্তর্ভুক্ত, তবে আপনার ক্ষেত্রে অন্য নাম বা অবস্থানও থাকতে পারে। .pub এক্সটেনশনটি পাবলিক কী নির্দেশ করে; প্রাইভেট কী-র পরিবর্তে ওই ফাইলে এই সমাধানটি প্রয়োগ করবেন না।
একটি ডিফল্ট Ed25519 কী-র জন্য এটি লিখুন:
chmod 600 "$HOME/.ssh/id_ed25519"
অন্য কোনো কী-র ক্ষেত্রে, id_ed25519-এর স্থলে এর আসল ফাইলের নামটি দিন। পাথটিকে কোটেশনের (" ") মধ্যে রাখলে ফাইলের নামের মধ্যে থাকা স্পেস এবং অন্যান্য শেল ক্যারেক্টারগুলো সিনট্যাক্স হিসেবে গণ্য হবে না। কী-টি যদি অন্য কোথাও থাকে, তবে কোটেশনের ভেতরে তার সম্পূর্ণ পাথ ব্যবহার করুন। 600 ওনারকে পড়ার এবং লেখার অনুমতি দেয় এবং গ্রুপ ও অন্যান্য ব্যবহারকারীদের অ্যাক্সেস সরিয়ে দেয়। OpenBSD chmod(1) ম্যানুয়াল
আপনি ls -l "$HOME/.ssh/id_ed25519" দিয়ে এর পরিবর্তিত মোড পরীক্ষা করতে পারেন। সাধারণত এটি দেখতে -rw------- দিয়ে শুরু হয়; ফাইল টাইপের পরের প্রথম তিনটি পারমিশন ক্যারেক্টার ওনারের অ্যাক্সেস দেখায় এবং বাকি গ্রুপগুলো দেখায় যে গ্রুপ বা অন্যদের কোনো অ্যাক্সেস নেই। ফাইলের ওনারও আপনার অ্যাকাউন্ট হতে হবে। এটি অন্য কোনো ব্যবহারকারীর মালিকানাধীন হলে, chmod ব্যর্থ হতে পারে অথবা SSH ক্লায়েন্ট এখনও এটি ব্যবহারে অক্ষম হতে পারে। ls -l দিয়ে ওনারশিপ পরীক্ষা করুন; অন্ধভাবে ওনারশিপ পরিবর্তন করা এড়িয়ে চলুন, বিশেষ করে sudo দিয়ে, কারণ ফাইলটি কেন অন্য কারো মালিকানাধীন তার ওপর ভিত্তি করে সঠিক সমাধান নির্ভর করে।
.ssh ডিরেক্টরি পরীক্ষা করুন
SSH ম্যানুয়াল সুপারিশ করে যে ~/.ssh/ যেন এর ওনার দ্বারা পড়ার, লেখার এবং সার্চ করার যোগ্য হয় এবং অন্যদের জন্য অ্যাক্সেস অযোগ্য হয়। SSH যদি ডিরেক্টরির নিজের পারমিশন সংক্রান্ত কোনো সমস্যার কথা জানায়, তবে চালান:
chmod 700 "$HOME/.ssh"
এটি গ্রুপ এবং অন্যদের অ্যাক্সেস সরিয়ে দেয় এবং আপনার অ্যাকাউন্টকে সম্পূর্ণ ডিরেক্টরি অ্যাক্সেসের অনুমতি দেয়। কী-টি যদি অন্য কোনো ফোল্ডারে সংরক্ষিত থাকে, তবে এর পাথের প্রতিটি ডিরেক্টরি পরীক্ষা করুন: ফাইলে পৌঁছানোর জন্য অ্যাকাউন্টের সার্চ (এক্সিকিউট) পারমিশন থাকা প্রয়োজন। প্রাথমিক সমাধান হিসেবে আপনার সম্পূর্ণ হোম ডিরেক্টরি বা .ssh ফোল্ডারে রিকার্সিভলি chmod চালাবেন না; এটি ভিন্ন প্রয়োজনীয়তার সম্পর্কহীন ফাইলগুলোর পারমিশন পরিবর্তন করে দিতে পারে। OpenBSD ssh(1) ম্যানুয়াল
নিশ্চিত করুন যে SSH ওই কী-টি ব্যবহার করছে
একটি সংশোধিত কী-ও কাজ করছে না বলে মনে হতে পারে যদি SSH অন্য কোথাও খোঁজে বা ভিন্ন কোনো পরিচিতি (identity) প্রদান করে। কোনো একটি সংযোগের জন্য নির্দিষ্ট কী নির্ধারণ করতে -i ব্যবহার করুন। উদাহরণের অ্যাকাউন্ট এবং হোস্টের স্থলে আপনার নিজস্ব তথ্য বসান:
ssh -i "$HOME/.ssh/id_ed25519" user@example.com
-i অপশনটি পাবলিক-কী অথেনটিকেশনের জন্য ব্যবহৃত আইডেন্টিটি ফাইল নির্বাচন করে। OpenBSD ssh(1) ম্যানুয়াল আরও বিস্তারিত সংযোগ লগের জন্য -v যোগ করুন:
ssh -v -i "$HOME/.ssh/id_ed25519" user@example.com
আপনি যদি একাধিক হোস্ট পরিচালনা করেন, তবে ~/.ssh/config-এ IdentityFile সেট করতে পারেন; Host ব্লক নির্ধারণ করে কোন সংযোগ সেটিংস প্রযোজ্য হবে। ক্লায়েন্ট ssh-agent দ্বারা সরবরাহ করা কী-গুলো ব্যবহার করারও চেষ্টা করতে পারে। কোনো এজেন্টে অনেক কী লোড করা থাকলে IdentitiesOnly yes কনফিগার করা আইডেন্টিটি ফাইলগুলোর মধ্যেই প্রদত্ত পরিচিতি সীমাবদ্ধ রাখতে পারে। OpenBSD ssh_config(5) ম্যানুয়াল
ত্রুটিটি যখন অন্য কোথাও থাকে তা জানুন
লোকাল প্রাইভেট-কী পারমিশন সংক্রান্ত সতর্কতা Permission denied (publickey) থেকে ভিন্ন। শেষেরটির অর্থ হতে পারে যে সার্ভারটি সংশ্লিষ্ট পাবলিক কী চিনতে পারছে না, ব্যবহারকারীর নাম ভুল, অথবা SSH অন্য কোনো আইডেন্টিটি চেষ্টা করছে। আপনার প্রাইভেট কী-র সাথে সামঞ্জস্যপূর্ণ পাবলিক কী-টি রিমোট হোস্টের অ্যাকাউন্টের জন্য অনুমোদিত (authorized) হতে হবে; লোকাল পারমিশন পরিবর্তন করলে তা সার্ভারে ওই পাবলিক কী ইনস্টল করে দেয় না। OpenBSD ssh(1) ম্যানুয়াল
যদি chmod "Operation not permitted" দেখায়, তবে আপনি ফাইলের ওনার কিনা এবং পাথটি আপনার উদ্দিষ্ট কী-র দিকে নির্দেশ করছে কিনা তা পরীক্ষা করুন। ওয়ার্নিং বন্ধ করার জন্য কোনো প্রাইভেট কী-কে ব্যাপকভাবে পড়ার যোগ্য (broadly readable) করা এড়িয়ে চলুন: SSH-এর সীমাবদ্ধতা ক্রেডেনশিয়ালকে সুরক্ষিত রাখে, এবং এটি সরিয়ে দিলে ক্লায়েন্ট কী-টি প্রত্যাখ্যান করতে পারে। প্রাইভেট কী এবং এর ডিরেক্টরিতে উপযুক্ত পারমিশন দেওয়া হয়ে গেলে, -v দিয়ে পুনরায় চেষ্টা করুন এবং একটি লোকাল ফাইল সমস্যা থেকে অথেনটিকেশন বা সার্ভার-সাইড সমস্যা আলাদা করতে ডায়াগনস্টিক আউটপুট অনুসরণ করুন।
উৎসসমূহ
ssh(1) — OpenBSD ম্যানুয়াল পেজ — OpenBSD
ssh_config(5) — OpenBSD ম্যানুয়াল পেজ — OpenBSD
chmod(1) — OpenBSD ম্যানুয়াল পেজ — OpenBSD