This site is best viewed using the updated version of Mozilla Firefox

রেড হ্যাট লিনাক্স : Configuring and Managing SSH (SSH এর খুঁটি-নাঁটি)

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

প্রথমেই আমরা SSH এর কিছূ বিষয় জেনে নিই।

প্যাকেজের নামঃ OpenSSH
পোর্ট নম্বরঃ 22 (পরিবর্তন করা যায়)
Daemon/ডি’মনঃ sshd
কনফিগারেশন ফাইলঃ /etc/ssh/sshd_config

যেকোন লিনাক্স মেশিনে যদি OpenSSH প্যাকেজটি ইন্সটল করা না থাকে তাহলে প্রথমেই তা ইনসটল করে নিতে হবে। এজন্য আমরা # yum install openssh* -y কমান্ডটি টার্মিনালে দিব। লক্ষ্য করুন, আমরা প্যাকেজটি ইন্সটল করছি Yum এর মাধ্যমে, এজন্য আমাদেরকে আগে অবশ্যই Yum কনফিগার করে নিতে হবে। Yum Server কনফিগার করার জন্য এই সাইটে একটি টিউটোরিয়াল দেওয়া আছে।

OpenSSH প্যাকেজটি ইন্সটল করার পর আমরা SSH সার্ভিসটি রিষ্টার্ট দিব।

# service sshd restart
# chkconfig sshd on

এতে করে আমাদের SSH সার্ভিসটি কনফিগার করা হয়ে গেল। এখন আমরা চাইলে নেটওয়ার্কের অন্য একটি কম্পিউটার থেকে দেখতে পারি, যে মেশিন/সার্ভারটিতে SSH কনফিগার করলাম সে মেশিনটিতে SSH এর মাধ্যমে লগইন করা যায় কি না। এজন্য আমরা ক্লায়েন্ট মেশিন থেকে নিচের কমান্ড দিব।

# ssh 192.168.10.1               (ধরি, আমাদের সার্ভারের আই.পি 192.168.10.1)

যেহেতু আমরা প্রথমবারের মতো SSH লগইন করছি, তাই নিচের ম্যাসেজটি প্রদর্শিত হবে।

এখানে একটি Fingerprint জেনারেট করার কথা বলা হচ্ছে। যদি কোন ক্লায়েন্ট মেশিন থেকে কোন সার্ভার মেশিনে প্রথমবারের মতো SSH লগইন করা হয় তখন এই Fingerprint জেনারেট হয়।

আমরা yes লিখে Enter প্রেস করবো।

Fingerprint জেনারেট হওয়ার পর আমরা যে মেশিনে (সার্ভার মেশিন) লগইন করেছি সে মেশিনের root ইউজারের পাসওয়ার্ড দিব।

পাসওয়ার্ড সঠিকভাবে দেওয়ার পর নিচের স্ক্রীণ প্রদর্শিত হবে।

টার্মিনালে একটু লক্ষ্য করে দেখুন, SSH লগইনের আগে আমরা ছিলাম rh2 নামক একটি কম্পিউটারে। কিন্তু, SSH লগইনের পর দেখা যাচ্ছে, আমরা এখন rh1 নামক কম্পিউটারে আছি। যেহেতু আমরা root ইউজার দিয়ে লগইন করেছি তাই আমরা এখন rh2 কম্পিউটারে বসেই rh1 কম্পিউটারের সব ধরণের কাজ করতে পারবো।

উদাহরণস্বরূপঃ ধরুন, সার্ভার মেশিনের ডেস্কটপে test.txt নামক এটি ফাইল আছে, তা কপি করে ক্লায়েন্ট মেশিনের ডেস্কটপে আনবো। এজন্য আমরা কমান্ড দিব নিম্নরূপঃ

# scp /root/Desktop/test.txt 192.168.10.2:/root/Desktop
(উল্লেখ্য, 192.168.10.2 হলো আমাদের ক্লায়েন্ট কম্পিউটারের আই.পি।)

এখন, ক্লায়েন্ট কম্পিউটারের ডেস্কটপে চেক করে দেখুন ফাইলটি চলে এসেছে।

এছাড়া # reboot কমান্ডটি দিয়ে দেখুন সার্ভার মেশিনটি রিবুট হবে। এভাবে আমরা সব কাজই করতে পারবো।

SSH Fingerprint

প্রথমবার SSH লগইনের সময় যে Fingerprint জেনারেট হয় তা সার্ভার মেশিনের /etc/ssh ডাইরেক্টরীর মধ্যে ইন্টিগ্রেট হয় এবং এর একটা ফিডব্যাক ক্লায়েন্ট মেশিনের /root/.ssh/known_host ফাইলে থাকে।

যদি আমরা ক্লায়েন্ট কম্পিউটারের /root/.ssh/known_host থেকে Fingerprint ডিলিট করি তাহলে পরবর্তীতে সার্ভার মেশিনের সাথে SSH কানেকশনের সময় তা আবার নতুন করে জেনারেট হবে।

ক্লায়েন্ট মেশিনের Fingerprint ডিলিট করতে হলেঃ

# vi /root/.ssh/known_host

অতঃপর দুইবার d বাটন প্রেস করে Fingerprint ডিলিট করবো এবং :wq! টাইপ করে Enter বাটন প্রেস করবো।

কিন্তু যদি আমরা সার্ভার মেশিনের /etc/ssh ডাইরেক্টরীর Key ফাইলগুলো ডিলিট করি তাহলে ক্লায়েন্ট মেশিন থেকে আর SSH লগইন করা যাবে না। এই সমস্যা সমাধানের জন্য আমাদেরকে অবশ্যই সার্ভার মেশিনের SSH সার্ভিস রিষ্টার্ট দিতে হবে।

সার্ভার মেশিনের Key ডিলিট করার জন্যঃ

# rm -fr /etc/ssh/*key*
# service sshd restart

পাসওয়ার্ড ছাড়া SSH লগইন

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

Public_key জেনারেট করার জন্য ক্লায়েন্ট মেশিনে নিচের কমান্ড দিব।

# cd /root/.ssh
# ssh-keygen -t dsa

কমান্ড দেওয়ার পর নিচের স্ক্রীনটি প্রদর্শিত হবে।

এখানে পর পর তিনটি প্রম্প্ট দিবে। প্রতিটি প্রম্প্ট এ আমরা কোন কিছু না লিখে Enter প্রেস করলেই নিচের স্ক্রীনটি প্রদর্শিত হবে।

অর্থাৎ, id_dsa.pub নামে Public_key জেনারেট হলো। Key দেথতে হলে আমরা # ls কমান্ডটি দিব।

এখন আমরা এই Public_key টি সার্ভার মেশিনে কপি করবো।

# ssh-copy-id -i id_dsa.pub root@192.168.10.1

yes লিখে Enter প্রেস করবো। এবং পাসওয়ার্ড দিব।

পাসওয়ার্ড দেওয়ার পর নিচের স্ক্রীনটি প্রদর্শিত হবে।

আমাদের Key ফাইল কপি করার কাজ শেষ হয়েছে। এখন, সার্ভার মেশিনে SSH লগইন করে দেখবো পাসওয়ার্ড ছাড়া লগইন করা যায় কি না।

# ssh 192.168.10.1

একটু লক্ষ্য করে দেখুন, এখন SSH লগইনের জন্য কোন পাসওয়ার্ড লাগছে না।

কিছু নিরাপত্তাজনিত কথা

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

পোর্ট নম্বর পরিবর্তন এবং root ইউজারের মাধ্যমে লগইন ডিসএ্যাবল করতে হলে SSH এর কনফিগারেশন ফাইলে কিছু পরিবর্তন আনতে হবে। প্রথমেই আমরা আমাদের সার্ভার মেশিনে একটি ইউজার তৈরী করবো।

ইউজার তৈরী ও পাসওয়ার্ড সেট করতে হলেঃ

# adduser naser
# passwd naser

অতঃপর SSH এর কনফিগারেশন ফাইল ওপেন করবো।

# vi /etc/ssh/sshd_config

এবং নিচের মতো করে ফাইলটিতে দুইটি লাইন পরিবর্তন করবো এবং একটি নতুন লাইন যোগ করবো।

            Port 2222                               (Line number 13)
            PermitRootLogin no             (Line number 42)
            AllowUsers naser                  (new line)

ফাইলটি সেভ করবো এবং SSH সার্ভিস রিষ্টার্ট দিব।

# service sshd restart

এখন পরিবর্তিত পোর্ট নম্বর ও ইউজারনেম দিয়ে লগইন করার জন্য ক্লায়েন্ট মেশিনে নিচের কমান্ড দিব।

# ssh naser@192.168.10.1 -p 2222

অতঃপর ইউজার naser এর পাসওয়ার্ড দিলে লগইন সাকসেসফুল হবে এবং নিচের মতো করে স্ক্রীন প্রদর্শিত হবে।

ধরুন, সার্ভার মেশিনে kamal নামে একটি ইউজার আছে। আমরা চাচ্ছি kamal ইউজার দিয়ে যেন SSH লগইন করা না যায়। সেজন্য কনফিগারেশন ফাইল ওপেন করে নিচের লাইনটি লিখতে হবে।

# vi /etc/ssh/sshd_config

            DenyUsers kamal                    (New Line)

ফাইলটি সেভ করবো এবং SSH সার্ভিস রিষ্টার্ট দিব।

আমাদের সার্ভার মেশিনে এই মুহূর্তে কে কে লগইন করে আছে তা দেখার জন্য নিচের কমান্ড দিব।

# w

আশাকরি এই টিউটোরিয়ালটি ভালভাবে প্র্যাকটিস করলে SSH নিয়ে আপনাদের ধারণা আরো স্বচ্ছ হবে। ভাল থাকবেন সবাই। আল্লাহ হাফেজ।