বিষয়বস্তুতে চলুন

ওপেনএসএসএইচ/সার্ভার

উইকিবই থেকে

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

সংস্করণ ৮.২ থেকে পিএস(১)-এ দেখানো শ্রবণরত প্রক্রিয়ার শিরোনামে প্রমাণীকরণের অপেক্ষায় থাকা সংযোগের সংখ্যাও দেখা যায়।

$ ps -p $(pgrep -u root sshd) -o pid,user,args 
  PID USER     COMMAND
44476 root     sshd: /usr/sbin/sshd [listener] 0 of 10-100 startups (sshd)

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

এসএসএইচডি(৮)

[সম্পাদনা]

এসএসএইচডি(৮) হলো সিকিউর শেল ডিমন, এবং এটি আগত সংযোগের জন্য অপেক্ষা করে। আইএএনএ নির্ধারিত এসএসএইচ(১)-এর মানক পোর্ট হলো ২২ [১]। যদি এসএসএইচডি(৮) কোনো বিশেষাধিকারপ্রাপ্ত পোর্টে না শোনে, তাহলে হোস্ট কীগুলো পড়া যায় এমন হলে এটিকে রুট দিয়ে চালু করার দরকার হয় না। তবে অ-মানক পোর্ট ব্যবহারের কথা ভাবার মতো পরিস্থিতি খুব কমই আছে, যদি আদৌ থাকে। এসএসএইচডি(৮)-এর একটি মাত্র ইনস্ট্যান্স নির্দিষ্ট ঠিকানার সঙ্গে, এমনকি একাধিক ঠিকানার সঙ্গেও, যুক্ত করা যায়। একই মেশিনে এসএসএইচডি(৮)-এর একাধিক ইনস্ট্যান্স চালানো যায়, প্রতিটির আলাদা কনফিগারেশনসহ; মাল্টি-হোমড মেশিনে বা নতুন কোনো কনফিগারেশন পরীক্ষা করার সময় এটি কাজে লাগতে পারে। এসএসএইচডি(৮) চালু করতে অবশ্যই পূর্ণ পাথ দিতে হবে, যেমন /usr/sbin/sshd

এসএসএইচডি(৮) - এসএসএইচ ডিমন, যা আপনাকে লগইন করার সুযোগ দেয়।
এসএসএইচডি-কনফিগ(৫) - সার্ভার কনফিগারেশন ফাইল।
এসএফটিপি-সার্ভার(৮) - এসএফটিপি সার্ভার সাবসিস্টেম, প্রয়োজন হলে এসএসএইচডি(৮) স্বয়ংক্রিয়ভাবে এটি চালু করে।
এসএসএইচ-কীসাইন(৮) - হোস্টভিত্তিক প্রমাণীকরণের সহায়ক প্রোগ্রাম; প্রয়োজন হলে এটিও এসএসএইচডি(৮) স্বয়ংক্রিয়ভাবে চালু করে।

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

পরীক্ষার জন্য এসএসএইচডি(৮) ডিমনকে তার কনফিগারেশন ফাইল বিশ্লেষণ করানো যায়, একই সঙ্গে সেটির বৈধতা পরীক্ষা করানো যায়, এবং শেষে কার্যকর কনফিগারেশন সেটিংস দেখাতে বলা যায়। এটি করা হয় বর্ধিত পরীক্ষামূলক মোড (-T) চালিয়ে, যা সার্ভারের প্রকৃত ডিফল্ট সেটিংস মুদ্রণ করে। চাইলে বিভিন্ন ইনপুট প্রয়োগ করতে -C অপশনও যোগ করা যায়। যেকোনো ক্ষেত্রেই, -T অপশনের আউটপুট দীর্ঘ হয়; তাই সেটি সর্ট(১) দিয়ে পাইপ করে সাজিয়ে, পরে লেস(১)-এর মতো কোনো পেজার দিয়ে দেখা সুবিধাজনক হতে পারে। আরও অপশনের জন্য সার্ভার কনফিগারেশন ডিবাগ করা অংশ দেখুন। আবারও বলা যায়, ডিমন চালু হওয়ার সময় অথবা SIGHUP পাওয়ার পর নির্দেশগুলো নিচের ক্রমে গ্রহণ করে:

  1. এসএসএইচডি(৮)-এর রান-টাইম অপশন
  2. সিস্টেম কনফিগারেশন ফাইল এসএসএইচডি-কনফিগ(৫) থেকে নির্দেশ

ডিফল্টভাবে সব গ্রুপের জন্য লগইনের অনুমতি থাকে। তবে AllowGroups বা AllowUsers-এর যেকোনো একটি নির্দিষ্ট করা হলে, তালিকায় নেই এমন সব ব্যবহারকারী বা গ্রুপের লগইন নিষিদ্ধ হয়। অনুমতি/নিষেধ নির্দেশগুলো নিচের ক্রমে প্রক্রিয়াকরণ করা হয়:

  1. DenyUsers,
  2. AllowUsers,
  3. DenyGroups, এবং সবশেষে,
  4. AllowGroups।

সর্বোচ্চ নমনীয়তার জন্য AllowGroups ব্যবহার করার পরামর্শ দেওয়া হয়। তবে AllowUsers থাকলে, সেটি কনফিগারেশন ফাইলে যে ক্রমেই থাকুক না কেন, AllowGroups-কে সম্পূর্ণভাবে ওভাররাইড করবে। মনে রাখতে হবে, DenyUsers ও DenyGroups—দুটিই এদের ওপর অগ্রাধিকার পায়। তবে বিপরীতে, DenyUsers ও DenyGroups একে অপরের সঙ্গে সংঘর্ষ করে না এবং একসঙ্গে ব্যবহার করা যায়। গ্রুপ সরাসরি নাম দিয়ে চিহ্নিত করা যায়, অথবা গ্রুপ নামের সঙ্গে মিলে এমন প্যাটার্নের মাধ্যমে অন্তর্ভুক্ত করা যায়; সবগুলো স্পেস দিয়ে পৃথক করা হয়। কোনো গ্রুপ সরাসরি বা প্যাটার্নের মাধ্যমে নির্দিষ্ট করা হলে, তালিকার কোনো গ্রুপ বা প্যাটার্নের সঙ্গে মিলে এমন গ্রুপের সদস্য ব্যবহারকারীদের জন্যই কেবল লগইন অনুমোদিত বা নিষিদ্ধ হবে। এখানে শুধু গ্রুপ বা ব্যবহারকারী অ্যাকাউন্টের নাম বৈধ; সংখ্যাসূচক গ্রুপ বা ব্যবহারকারী আইডি স্বীকৃত নয়।

/etc/ssh/sshd_config.d/ থেকে ফাইল পড়ার ক্রম গুরুত্বপূর্ণ

[সম্পাদনা]

Include নির্দেশের কারণে যদি /etc/ssh/sshd_config.d/ ডিরেক্টরি থেকে অতিরিক্ত কনফিগারেশন ফাইল পড়া হয়, তাহলে কোন ক্রমে ফাইলগুলো পড়া হচ্ছে তা খুবই গুরুত্বপূর্ণ[২]। উপরে যেমন বলা হয়েছে, কনফিগারেশনের মান প্রথম মিলের ভিত্তিতে নির্ধারিত হয়। তাই কোনো ফাইলে পরস্পরবিরোধী সেটিংস থাকলে, যে ফাইলটি আগে পড়া হবে সেটিই অগ্রাধিকার পাবে, আর পরবর্তী ফাইলগুলোর বিরোধপূর্ণ কনফিগারেশন নির্দেশ উপেক্ষা করা হবে। চূড়ান্ত সার্ভার সেটিংস পরীক্ষা ও যাচাই করা সহজ; এর জন্য -T অপশন ব্যবহার করা যায়, চাইলে -C অপশনসহ বা ছাড়াই।

$ /usr/sbin/sshd -T | sort | less -X

যেহেতু এসএসএইচডি-কনফিগ(৫) আউটওয়ার্ড-ফেসিং সার্ভিসগুলোর আচরণে প্রভাব ফেলে, তাই শেষ পর্যন্ত কোন সেটিংস কার্যকর হচ্ছে তা ঠিকভাবে যাচাই করা খুব গুরুত্বপূর্ণ। এ কারণে -T দিয়ে পরীক্ষা করার সময় -C অপশনও ব্যবহার করা যেতে পারে। এতে উৎস ঠিকানা, লগইন করতে আসা অ্যাকাউন্টের নাম, রিজলভ করা উৎস হোস্টনেম, স্থানীয় সার্ভার ঠিকানা, স্থানীয় সার্ভার পোর্ট নম্বর এবং রাউটিং টেবিলের প্রাসঙ্গিক সমন্বয়ে Match নির্দেশ প্রয়োগ হলে কী সেটিংস কার্যকর হবে, তা দেখা যায়।

নিচের কমান্ডটি দেখাবে—ব্যবহারকারী 'fred' যদি 192.168.100.5 ঠিকানা থেকে server.example.org হোস্টে লগইন করার চেষ্টা করে, তাহলে কোন নির্দিষ্ট কনফিগারেশন প্রয়োগ হবে।

$ /usr/sbin/sshd -TC user=fred,host=server.example.org,addr=192.168.100.5

-C অপশন নিয়ে আরও আলোচনা আছে সার্ভার কনফিগারেশন ডিবাগ করা অংশে।

inetd / xinetd এর অধীনে এসএসএইচডি

[সম্পাদনা]

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

              Packet
 Internet --> Filter --> tcpwrappers --> (x)inetd --> sshd
             (firewall)  (aka tcpd)
  1. ↑ "সার্ভিস নেম ও ট্রান্সপোর্ট প্রোটোকল পোর্ট নম্বর রেজিস্ট্রি"। আইইটিএফ। ২০১২। 
  2. ↑ ক্রিস সিবেনম্যান (২০২৫-০৪-০২)। "/etc/ssh/sshd_config.d/-এর ফাইলগুলোর ক্রম গুরুত্বপূর্ণ এবং তা আপনাকে অবাকও করতে পারে"। দ্য ইউনিভার্সিটি অব টরন্টো। সংগ্রহের তারিখ ২০২৫-০৫-২৩।