যে সংযোগ লগইনের পরে কাজ করে আর তার আগে ব্যর্থ হয়, সাধারণত এর অর্থ বুটের সময়ের প্রচেষ্টা কোনো সিক্রেট পেতে পারেনি, সার্ভার কোনো সিক্রেট প্রত্যাখ্যান করেছে তা নয়। ক্রেডেনশিয়ালটি আছে; যে প্রসঙ্গ এটি চাইছে, তার অস্তিত্ব নেই। এই একটিমাত্র পার্থক্যই একটি অপ্রয়োজনীয় পাসওয়ার্ড রিসেট বাঁচায়।

অনুরোধটি অনুসরণ করুন: ডেস্কটপ সেশন তৈরি হওয়ার আগেই কিছু একটি সংযোগটি চালু করে, আর যে সিক্রেট স্টোর সাধারণত উত্তর দেয় তা এখনও আনলক হয়নি। সিক্রেটটি কার মালিকানা, তা নিয়ে দুটি প্রসঙ্গ একমত নয়, এবং প্রোফাইলটি লিখে রাখে তাদের মধ্যে কোনটি এটি সরবরাহ করবে বলে প্রত্যাশিত।

বুটের পথটি আসলে কী চায়

বুটের সময় NetworkManager একটি সিস্টেম পরিষেবা হিসেবে চালু হয়, যেখানে কোনো ব্যবহারকারী সেশন নেই, কোনো সেশন D-Bus নেই এবং কোনো আনলক করা কীরিং নেই। একটি সংযোগ প্রোফাইল তবুও তোলা যেতে পারে, তবে কেবল এমন সিক্রেট দিয়ে যা পরিষেবা নিজেই পেতে পারে। কোনো সিক্রেট এজেন্টের মালিকানাধীন যেকোনো কিছু তখন পর্যন্ত অপেক্ষা করে যতক্ষণ না একজন মানুষ লগইন করে এবং এজেন্টটি উপস্থিত হয়। পরিষেবাটি ঠিক তা-ই করছে যা তার কনফিগারেশন বলে; প্রোফাইলটিই সেই জিনিস যা বদলাতে হবে।

ব্যর্থতাটি কীরিংয়ে লুকানো নেই, সংযোগটির ভেতরেই লেখা আছে।

একটি সংযোগের সিক্রেট ফ্ল্যাগ পড়া

সংযোগটিকে জিজ্ঞাসা করুন সে কী প্রত্যাশা করে, ডেস্কটপ কী মনে রাখে তা নয়। ফ্ল্যাগ কলামটি সরাসরি প্রশ্নের উত্তর দেয়, এবং ডিস্কের প্রোফাইল ফাইলে এটি রিবুটেও টিকে থাকে।

প্রোফাইল তালিকা দিয়ে শুরু করুন, তারপর নিশ্চিত করুন কোন সংযোগটি নিজে থেকে ওঠার জন্য সেট করা আছে। এরপর একটি সংযোগ ডাম্প করুন এবং পাসওয়ার্ড ফ্ল্যাগগুলি পড়ুন:

nmcli -f NAME,UUID,TYPE,AUTOCONNECT connection show
nmcli connection show "Work VPN" | grep -i -E "password|secret|key"
journalctl -b -u NetworkManager --grep "secret"

প্রথম কমান্ডটি নিশ্চিত করে কোন প্রোফাইলগুলি আছে এবং একটি অটোকানেক্টে সেট আছে কি না, যেভাবেই তো প্রথমে একটি তদারকিহীন প্রচেষ্টা শুরু হয়। দ্বিতীয়টি ফ্ল্যাগের মান প্রকাশ করে, আর তৃতীয়টি দেখায় পরিষেবাটি অভিযোগ করছে যে একটি নির্দিষ্ট সিক্রেটের জন্য কোনো এজেন্ট উত্তর দেয়নি। একটি লগ লাইন যা কোনো সিক্রেটকে এজেন্ট-মালিকানাধীন বলে উল্লেখ করে, সেটিই এক বাক্যে পুরো রোগনির্ণয়।

Flag valueWhere the secret livesBehaviour before login
0Stored in the connection profileAvailable to the system service
1Owned by a secret agentBlocks until the agent is unlocked
2Never storedPrompts on every activation
4Not requiredNever requested at all

কেন সংযোগটিকে সিস্টেম স্কোপে সরানো উত্তরটি বদলে দেয়

ব্যবহারকারীর মালিকানাধীন একটি সংযোগ সেই ব্যবহারকারীর এজেন্টের অধীনে সক্রিয় হয়, তাই ডেস্কটপ ওঠার পরেই এটি নিখুঁতভাবে কাজ করে। এটিকে সিস্টেম স্কোপে সরালে এজেন্টটি পথ থেকে সরে যায়, তাই একই প্রোফাইল VPN কনফিগারেশনের একটি লাইনও না বদলেও ভিন্নভাবে আচরণ করে।

এই সরানোটি একটি বৈধ নকশা, এবং এটি একটি শর্ত বহন করে: সিক্রেটটি সিস্টেম পরিষেবার কাছে পৌঁছানোযোগ্য হতে হবে। এটি প্রোফাইলে সংরক্ষণ করা, সিস্টেম-স্কোপযুক্ত ক্রেডেনশিয়ালের মাধ্যমে সরবরাহ করা, বা সঠিক মুহূর্তে একটি ইন্টারঅ্যাকটিভ প্রম্পট গ্রহণ করা—সবই বৈধ উত্তর। ফ্ল্যাগ 1 রেখে আশা করা নয়।

নিজস্ব পাসফ্রেজসহ একটি প্রাইভেট কী দ্বিতীয় স্তর যোগ করে। এমনকি সংরক্ষিত অ্যাকাউন্ট পাসওয়ার্ডও এমন একটি কী আনলক করবে না যা পাসফ্রেজ চায়, তাই কিছু বদলানোর আগে যাচাই করুন ব্যর্থ হওয়া ধাপটি আসলে কোন সিক্রেট চাইছে।

কী করা উচিত নয়, আর তার বদলে কী করা উচিত

প্রতিটি ক্রেডেনশিয়াল ফাইলকে সবার পড়ার যোগ্য করা, বা প্রম্পটের প্রয়োজন না হয় বলে প্রমাণীকরণ নিষ্ক্রিয় করা—শুরুর অসুবিধার বিনিময়ে স্থায়ী প্রকাশ ঘটায়। দুটোই নির্ভরতাটি সমাধান না করে লুকিয়ে রাখে, এবং পরের ইমেজ আপডেট একই ব্যর্থতা ফিরিয়ে আনে।

সেই ধাপে আপনার ডিস্ট্রিবিউশন তদারকিহীন সক্রিয়করণের জন্য যে পদ্ধতির নথিভুক্ত করে ব্যবহার করুন, তারপর প্রোফাইলের ফ্ল্যাগগুলি তার সঙ্গে মেলে কি না নিশ্চিত করুন। ফলাফলটি পরীক্ষা করুন একটি পরিষ্কার বুট থেকে, এমন একটি শেল থেকে নয় যার ইতিমধ্যে একটি এজেন্ট আছে। সংযোগের মালিক, সিক্রেটের উৎস এবং যে ধাপটি কাজ করতেই হবে তা লিখে রাখুন, যাতে পরে অটোস্টার্ট পরিবর্তন নীরবে প্রথমে কেউ ডেস্কটপ আনলক করার উপর নির্ভরতা ফিরিয়ে আনতে না পারে। নথিভুক্তি একটি মেরামত করা পরিষেবা আর পরের ত্রৈমাসিকে আবার ভাঙা একটির মধ্যে পার্থক্য।

লগইনের পরে ম্যানুয়াল পুনঃপ্রচেষ্টার বদলে একটি নিয়ন্ত্রিত পরিষ্কার বুট থেকে পরীক্ষা করুন। পুনঃপ্রচেষ্টাটি সফল হয় যে কারণে বুটের প্রচেষ্টা ব্যর্থ হয়েছিল, আর দ্রুত পরীক্ষা ঠিক সেই প্রমাণটিই নষ্ট করে।

সম্পর্কিত নিবন্ধ