CentOS Archives - To Learn Team https://tolearnteam.com/tag/centos/ Learn about Everything Online Thu, 06 Aug 2026 12:53:00 +0000 en-US hourly 1 https://wordpress.org/?v=7.1.2 https://tolearnteam.com/wp-content/uploads/2026/07/cropped-Logo-32x32.png CentOS Archives - To Learn Team https://tolearnteam.com/tag/centos/ 32 32 CentOS 9 এ SSH Server কিভাবে সেটআপ ও Hardening করবেন? Key-Based Login সহ ফুল বাংলা গাইড 2026 https://tolearnteam.com/centos-ssh-server-client-configuration-hardening-bangla/ Wed, 05 Aug 2026 17:50:32 +0000 http://tolearnteam.com/?p=2085 ভূমিকা: SSH কেন? Telnet এর চেয়ে কত ভালো? SSH – Secure Shell হলো রিমোট সার্ভার অ্যাক্সেসের ইন্ডাস্ট্রি স্ট্যান্ডার্ড। পোর্ট 22 ব্যবহার করে। Telnet এর সব ডাটা প্লেইন টেক্সটে গেলেও, SSH সবকিছু…

The post CentOS 9 এ SSH Server কিভাবে সেটআপ ও Hardening করবেন? Key-Based Login সহ ফুল বাংলা গাইড 2026 appeared first on To Learn Team.

]]>
ভূমিকা: SSH কেন? Telnet এর চেয়ে কত ভালো?

SSH – Secure Shell হলো রিমোট সার্ভার অ্যাক্সেসের ইন্ডাস্ট্রি স্ট্যান্ডার্ড। পোর্ট 22 ব্যবহার করে। Telnet এর সব ডাটা প্লেইন টেক্সটে গেলেও, SSH সবকিছু এনক্রিপ্ট করে পাঠায়।

SSH এর ৩টি মূল কাজ:

  1. Remote Login: সিকিউরলি সার্ভারে লগইন
  2. Command Execution: রিমোট কমান্ড রান করা
  3. File Transfer: scp, sftp, rsync দিয়ে ফাইল কপি

এই আর্টিকেলে যা শিখবেন:

  1. OpenSSH Server ও Client ইনস্টল ও চালু করা
  2. /etc/ssh/sshd_config ফাইলের গুরুত্বপূর্ণ অপশন
  3. SSH Port চেঞ্জ করে সিকিউরিটি বাড়ানো
  4. Root Login ও Password Login বন্ধ করা
  5. Key-Based Authentication সেটআপ – পাসওয়ার্ড ছাড়া লগইন
  6. Firewalld ও SELinux কনফিগারেশন
  7. একাডেমিক আলোচনা: Asymmetric Cryptography, SSH Handshake

১. পূর্বশর্ত ও প্রয়োজনীয় প্যাকেজ

বিষয়প্রয়োজনক্লারিফিকেশন
OSCentOS Stream 9 / RHEL 9CentOS 7 এও একই, শুধু yum ব্যবহার হবে
প্যাকেজopenssh-server, openssh-clientsসার্ভার ও ক্লায়েন্ট। ডিফল্টভাবে ইনস্টল থাকে
ইউজারsudo এক্সেস আছে এমন নন-রুট ইউজারroot দিয়ে সরাসরি SSH করা রিস্কি
নেটওয়ার্কসার্ভারের IP জানা থাকতে হবেip a দিয়ে চেক করুন

স্পেশাল ইনস্ট্রাকশন: CentOS Minimal Install এ openssh-server আগে থেকেই ইনস্টল ও চালু থাকে। তবুও ভেরিফাই করে নেব।


২. Step 1: SSH Server ইনস্টল ও স্ট্যাটাস চেক

2.1. প্যাকেজ ইনস্টল/ভেরিফাই করুন

Bash

sudo dnf install openssh-server openssh-clients -y

ক্লারিফিকেশন: openssh-server হলো ডেমন sshd, openssh-clients হলো ssh, scp, sftp কমান্ড।

2.2. সার্ভিস চালু ও এনাবল করুন

Bash

sudo systemctl start sshd
sudo systemctl enable sshd
sudo systemctl status sshd

আউটপুট active (running) দেখাবে:

Code

● sshd.service - OpenSSH server daemon     
           Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)     
           Active: active (running) since...

2.3. পোর্ট লিসেনিং চেক করুন

Bash

sudo ss -tulpn | grep :22

আউটপুট:

Code

tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1234,fd=4))

0.0.0.0:22 মানে সব IP থেকে পোর্ট 22 এ কানেকশন নিচ্ছে।


৩. Step 2: ফায়ারওয়াল ও SELinux কনফিগার

3.1. Firewalld দিয়ে পোর্ট 22 ওপেন করুন

Bash

sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
sudo firewall-cmd --list-services

ক্লারিফিকেশন: --add-service=ssh অটো পোর্ট 22 ওপেন করে। ম্যানুয়ালি করতে চাইলে: --add-port=22/tcp

3.2. SELinux Context

SSH এর ডিফল্ট পোর্ট 22 এর জন্য SELinux আগে থেকেই কনফিগার করা। পোর্ট চেঞ্জ করলে SELinux আপডেট করতে হবে। সেটা Step 4 এ দেখাব।

Bash

sudo semanage port -l | grep ssh

আউটপুট: ssh_port_t tcp 22


৪. Step 3: SSH Hardening – /etc/ssh/sshd_config এডিট

এটাই সবচেয়ে গুরুত্বপূর্ণ স্টেপ। সার্ভার সিকিউর করার জন্য এই ফাইল এডিট করতে হবে।

গুরুত্বপূর্ণ: কনফিগ চেঞ্জ করার আগে ব্যাকআপ নিন। ভুল হলে সার্ভার লক আউট হয়ে যাবেন।

Bash

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_config

নিচের লাইনগুলো খুঁজে বের করে চেঞ্জ করুন:

4.1. Port চেঞ্জ করুন – বট অ্যাটাক কমবে

INI

#Port 22
Port 2222

ক্লারিফিকেশন: ডিফল্ট পোর্ট 22 এ সবাই অ্যাটাক করে। 2222 বা 22022 এর মতো নন-স্ট্যান্ডার্ড পোর্ট দিলে ৯০% অটো স্ক্যানার বাদ পড়বে।

পোর্ট চেঞ্জ করলে ২টা কাজ মাস্ট:

Bash

# 1. SELinux কে নতুন পোর্টের কথা জানান
sudo semanage port -a -t ssh_port_t -p tcp 2222

# 2. Firewall এ নতুন পোর্ট ওপেন করুন

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload

4.2. Root Login বন্ধ করুন

INI

PermitRootLogin no

ক্লারিফিকেশন: root হলো কমন ইউজারনেম। হ্যাকাররা প্রথমে এটা ট্রাই করে। no করে দিলে শুধু নন-রুট ইউজার দিয়ে লগইন করে পরে sudo ব্যবহার করতে হবে।

4.3. Password Authentication বন্ধ করুন – সবচেয়ে সিকিউর

INI

PasswordAuthentication no
PubkeyAuthentication yes

সতর্কতা: এটা এনাবল করার আগে Step 5 এ Key-Based Login সেটআপ করে টেস্ট করে নিবেন। না হলে সার্ভার থেকে লক আউট হয়ে যাবেন।

4.4. অন্যান্য গুরুত্বপূর্ণ অপশন

INI

MaxAuthTries 3 # ৩ বার ভুল পাসওয়ার্ড দিলে ডিসকানেক্ট
LoginGraceTime 30 # ৩০ সেকেন্ডের মধ্যে লগইন না করলে ডিসকানেক্ট
AllowUsers admin devuser # শুধু এই ইউজাররা SSH করতে পারবে
X11Forwarding no # GUI ফরওয়ার্ডিং বন্ধ, সার্ভারে দরকার নাই

4.5. কনফিগ টেস্ট ও রিস্টার্ট

সিনট্যাক্স ভুল আছে কিনা চেক করুন:

Bash

sudo sshd -t

কোনো আউটপুট না আসলে সব ঠিক আছে। এরর আসলে ঠিক করুন।

এবার রিস্টার্ট করুন:

Bash

sudo systemctl restart sshd

৫. Step 4: Key-Based Authentication সেটআপ – পাসওয়ার্ড ছাড়া লগইন

এটা SSH এর সবচেয়ে সিকিউর মেথড। Private Key আপনার PC তে থাকবে, Public Key সার্ভারে।

5.1. আপনার লোকাল PC/Windows এ Key Pair জেনারেট করুন

Windows PowerShell বা Linux/Mac Terminal এ:

Bash

ssh-keygen -t ed25519 -C "admin@ToLearnTeam"

ক্লারিফিকেশন:

  1. -t ed25519: মডার্ন ও সবচেয়ে সিকিউর অ্যালগরিদম। rsa পুরানো।
  2. -C: কমেন্ট, কার কী সেটা বোঝার জন্য।
  3. ফাইল সেভ লোকেশন: Enter চাপুন = /home/user/.ssh/id_ed25519
  4. Passphrase: একটা স্ট্রং পাসওয়ার্ড দিন। Key চুরি হলেও এটা ছাড়া কাজ করবে না।

২টা ফাইল তৈরি হবে:

  1. id_ed25519: Private Key। এটা কখনো কারো সাথে শেয়ার করবেন না।
  2. id_ed25519.pub: Public Key। এটা সার্ভারে দিবেন।

5.2. Public Key সার্ভারে কপি করুন

সবচেয়ে সহজ উপায় ssh-copy-id কমান্ড:

Bash

ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@192.168.1.100 -p 22

ক্লারিফিকেশন: -p 22 হলো পোর্ট। যদি Step 4 এ পোর্ট 2222 করে থাকেন তাহলে -p 2222 দিবেন।

এটা প্রথমবার পাসওয়ার্ড চাইবে। এরপর থেকে আর লাগবে না।

ম্যানুয়াল মেথড:

  1. id_ed25519.pub ফাইলের কনটেন্ট কপি করুন: cat ~/.ssh/id_ed25519.pub
  2. সার্ভারে লগইন করুন:

Bash

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
  1. কপি করা Public Key পেস্ট করুন → সেভ করুন
  2. পারমিশন ঠিক করুন:

Bash

chmod 600 ~/.ssh/authorized_keys

5.3. Key দিয়ে লগইন টেস্ট করুন

Bash

ssh -i ~/.ssh/id_ed25519 -p 2222 admin@192.168.1.100

পাসওয়ার্ড চাইবে না, সরাসরি লগইন হবে। কাজ করলে এখন /etc/ssh/sshd_config এ PasswordAuthentication no করে দিতে পারেন।

5.4. ডিরেক্টরি স্ট্রাকচার ও পারমিশন

Bash

/home/admin/
└──.ssh/ # chmod 700
├── authorized_keys # chmod 600 – পাবলিক কী লিস্ট
├── id_ed25519 # chmod 600 – প্রাইভেট কী, ক্লায়েন্টে থাকে
├── id_ed25519.pub # chmod 644 – পাবলিক কী
└── known_hosts # chmod 644 – যেসব সার্ভারে কানেক্ট করেছেন তার ফিঙ্গারপ্রিন্ট

গুরুত্বপূর্ণ: পারমিশন ভুল হলে SSH কাজ করবে না। 700 ও 600 মাস্ট।


৬. Step 5: SSH Client কমান্ড ও উদাহরণ

6.1. বেসিক লগইন

Bash

ssh admin@192.168.1.100
ssh admin@192.168.1.100 -p 2222 # কাস্টম পোর্ট
ssh -i ~/.ssh/mykey.pem admin@server.com # স্পেসিফিক কী দিয়ে

6.2. রিমোট কমান্ড রান করা – লগইন না করেই

Bash

ssh admin@192.168.1.100 'df -h'
ssh admin@192.168.1.100 'sudo systemctl status nginx'

সার্ভারে লগইন না করেই আউটপুট আপনার টার্মিনালে দেখাবে।

6.3. SCP দিয়ে ফাইল কপি

Bash

# লোকাল থেকে সার্ভারে ফাইল পাঠানো
scp -P 2222 /home/user/file.txt admin@192.168.1.100:/home/admin/
# সার্ভার থেকে লোকালে ফাইল আনা
scp -P 2222 admin@192.168.1.100:/var/log/messages./
# ফোল্ডার কপি
scp -P 2222 -r /home/user/website admin@192.168.1.100:/var/www/

ক্লারিফিকেশন: scp তে পোর্টের জন্য বড় হাতের -P, ssh এ ছোট হাতের -p।


৭. একাডেমিক আলোচনা: SSH কিভাবে কাজ করে?

7.1. Asymmetric Cryptography

SSH, Key-Based Auth এর জন্য Public-Private Key Pair ব্যবহার করে। এটা Asymmetric Cryptography।

  1. Public Key: তালার মতো। সবাইকে দেওয়া যায়। এটা দিয়ে ডাটা এনক্রিপ্ট করা যায়।
  2. Private Key: চাবির মতো। শুধু আপনার কাছে থাকবে। এটা দিয়ে ডাটা ডিক্রিপ্ট করা যায়।

সার্ভারে আপনার Public Key authorized_keys এ থাকে। লগইনের সময় সার্ভার একটা চ্যালেঞ্জ পাঠায়। আপনার PC সেটা Private Key দিয়ে সাইন করে পাঠায়। মিলে গেলে লগইন হয়। পাসওয়ার্ড একবারও নেটওয়ার্কে যায় না।

7.2. SSH Handshake প্রসেস

  1. TCP Connection: ক্লায়েন্ট পোর্ট 22/2222 এ কানেক্ট করে।
  2. Version Exchange: সার্ভার ও ক্লায়েন্ট SSH ভার্সন শেয়ার করে।
  3. Key Exchange: Diffie-Hellman দিয়ে একটা সেশন কী তৈরি হয়। এটা Symmetric Key।
  4. Server Authentication: ক্লায়েন্ট সার্ভারের Host Key ~/.ssh/known_hosts এর সাথে মিলিয়ে দেখে। Man-in-the-Middle অ্যাটাক ধরার জন্য।
  5. User Authentication: পাসওয়ার্ড বা Public Key দিয়ে ইউজার ভেরিফাই হয়।
  6. Encrypted Channel: এরপর সব কমান্ড ও ডাটা সেশন কী দিয়ে এনক্রিপ্ট হয়ে যায়।

7.3. SSH vs Telnet – একাডেমিক তুলনা

প্যারামিটারTelnetSSH
ProtocolApplication LayerApplication Layer
SecurityNone, Plain TextEncryption, Integrity, Auth
Port2322
AuthenticationPlain PasswordPassword, Public Key, Keyboard-Interactive
Data IntegrityNo CheckHMAC-SHA2 দিয়ে ভেরিফাই
OSI Layer77, কিন্তু 6 এ এনক্রিপশন হয়
ব্যবহারDeprecated, LegacyIndustry Standard

সিদ্ধান্ত: CIA Triad – Confidentiality, Integrity, Availability – SSH তিনটাই নিশ্চিত করে, Telnet একটাও না।


৮. বোনাস: Fail2Ban দিয়ে Brute Force অ্যাটাক বন্ধ করুন

SSH এ বারবার ভুল পাসওয়ার্ড দিলে IP ব্লক করার জন্য Fail2Ban ব্যবহার করুন।

Bash

sudo dnf install epel-release -y
sudo dnf install fail2ban -y
sudo systemctl enable fail2ban --now
sudo nano /etc/fail2ban/jail.local

ফাইলে পেস্ট করুন:

INI

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600

Bash

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

৩ বার ভুল করলে ১ ঘণ্টার জন্য IP ব্যান হয়ে যাবে।


৯. উপসংহার ও চেকলিস্ট

আপনি এখন একটি প্রোডাকশন-গ্রেড সিকিউর SSH সার্ভার কনফিগার করতে পারেন।

সিকিউরিটি চেকলিস্ট:

  1.  Port 22 চেঞ্জ করে 2222 বা অন্য কিছু করেছেন?
  2.  PermitRootLogin no করা আছে?
  3.  PasswordAuthentication no করে Key-Based Login চালু করেছেন?
  4.  AllowUsers দিয়ে স্পেসিফিক ইউজার এলাও করেছেন?
  5.  Firewalld এ শুধু নতুন SSH পোর্ট ওপেন?
  6.  Fail2Ban ইনস্টল করেছেন?

সিরিজের পরবর্তী পর্ব: CentOS এ LAMP Stack ইনস্টলেশন - Apache, MariaDB, PHP 8.2। আমরা ওয়েব সার্ভার বানানো শিখব।

ToLearnTeam.com এর সাথে থাকুন। কোনো স্টেপে আটকে গেলে কমেন্ট করুন। Happy Securing!


প্রশ্ন: আপনার সার্ভারে ssh -v admin@IP কমান্ড দিলে কোন লাইনে Authenticated দেখাচ্ছে?



Windows থেকে authorized_keys ফাইলে পাবলিক কী কপি না হওয়ার ৩টা কমন কারণ আছে। স্টেপ বাই স্টেপ ফিক্স করি।



সমস্যা: Windows এর Public Key CentOS এর ~/.ssh/authorized_keys এ যাচ্ছে না

সলিউশন ১: ssh-copy-id ব্যবহার করুন – সবচেয়ে সহজ, Windows 10/11 এ কাজ করে

Windows PowerShell বা CMD ওপেন করুন:

powershell

# 1. প্রথমে চেক করুন কী আছে কিনা
type %USERPROFILE%\.ssh\id_ed25519.pub
# যদি "The system cannot find the path" আসে, তাহলে কী বানান:
ssh-keygen -t ed25519 -C "your_email@ToLearnTeam.com"

Enter ৩ বার চাপুন। পাসফ্রেজ না দিলেও হবে, তবে দেওয়া ভালো।

powershell

# 2. সার্ভারে কী কপি করুন - অটোমেটিক সব পারমিশন ঠিক করে দিবে
ssh-copy-id -i %USERPROFILE%\.ssh\id_ed25519.pub admin@192.168.1.100 -p 2222

ক্লারিফিকেশন: admin আপনার CentOS ইউজার, 192.168.1.100 সার্ভারের IP, -p 2222 আপনার SSH পোর্ট। পোর্ট 22 হলে -p 2222 বাদ দিন।

প্রথমবার সার্ভারের পাসওয়ার্ড চাইবে। দিলেই কপি হয়ে যাবে।

টেস্ট করুন:

powershell

ssh -i %USERPROFILE%\.ssh\id_ed25519 admin@192.168.1.100 -p 2222

পাসওয়ার্ড ছাড়া লগইন হলে সাকসেস।


সলিউশন ২: ম্যানুয়াল কপি-পেস্ট – ssh-copy-id না থাকলে

Step 1: Windows এ Public Key কপি করুন

powershell

type %USERPROFILE%\.ssh\id_ed25519.pub | clip

clip কমান্ড পুরো কী ক্লিপবোর্ডে কপি করে দিবে।

Step 2: CentOS সার্ভারে লগইন করে ম্যানুয়াল পেস্ট করুন

Bash

# 1. .ssh ফোল্ডার বানান ও পারমিশন ঠিক করুন
mkdir -p ~/.sshchmod 700 ~/.ssh
# 2. authorized_keys ফাইল খুলুন
nano ~/.ssh/authorized_keys
# 3. Windows থেকে কপি করা কী পেস্ট করুন - Ctrl+V# কী এক লাইনে থাকতে হবে। শুরু হবে ssh-ed25519 দিয়ে, শেষ হবে আপনার ইমেইল দিয়ে
# 4. সেভ করুন: Ctrl+O, Enter, Ctrl+X
# 5. পারমিশন মাস্ট ঠিক করুন, না হলে কাজ করবে না
chmod 600 ~/.ssh/authorized_keys

Step 3: SELinux Context ঠিক করুন – এটা না করলে কাজ করবে না

Bash

restorecon -Rv ~/.ssh

অথবা:

Bash

chcon -R unconfined_u:object_r:ssh_home_t:s0 ~/.ssh

কমন ৪টা ভুল যার কারণে কাজ করে না

ভুললক্ষণসমাধান
1. পারমিশন ভুলPermission denied (publickey)chmod 700 ~/.ssh এবং chmod 600 ~/.ssh/authorized_keys মাস্ট
2. কী ভেঙে গেছেকী ২-৩ লাইনে ভাগ হয়ে গেছেauthorized_keys এ ১টা কী = ১টা লাইন। কোনো Enter/Line Break থাকবে না
3. SELinux ব্লক করছে/var/log/secure এ Authentication refusedrestorecon -Rv ~/.ssh রান করুন
4. ভুল ইউজারের হোমেroot দিয়ে লগইন করে admin এর ফাইলে কী পেস্টযে ইউজার দিয়ে SSH করবেন, তার হোমে ~/.ssh/authorized_keys বানাতে হবে

ডিবাগ কমান্ড CentOS এ রান করুন:

Bash

# 1. ফাইল আছে কিনা ও পারমিশন চেক
ls -ld ~/.sshls -l ~/.ssh/authorized_keys
# আউটপুট: drwx------ এবং -rw------- হতে হবে
# 2. SELinux এরর চেক করুন
sudo ausearch -m avc -ts recent# বা
sudo cat /var/log/secure | grep ssh
# 3. SSH ডেমন ডিবাগ মোডে চেকs
udo sshd -T | grep -i authorizedkeysfile
# আউটপুট: authorizedkeysfile .ssh/authorized_keys দেখাবে

PuTTY ব্যবহার করলে .ppk থেকে কনভার্ট

আপনি PuTTY দিয়ে কী বানালে .ppk ফরম্যাট হয়। সেটা OpenSSH এ কাজ করে না।

কনভার্ট করার নিয়ম:

  1. PuTTYgen ওপেন করুন → Load → আপনার .ppk ফাইল লোড করুন
  2. Conversions → Export OpenSSH key → id_ed25519 নামে সেভ করুন
  3. উপরের বক্স থেকে Public key for pasting পুরোটা কপি করে CentOS এর authorized_keys এ পেস্ট করুন

ফাইনাল চেকলিস্ট – CentOS এ রান করুন

Bash

# 1. ফাইলে কী আছে কিনা দেখুন
cat ~/.ssh/authorized_keys
# ssh-ed25519 AAAAC3... আপনার_ইমেইল দিয়ে শুরু একটা লাইন দেখাবে
# 2. পারমিশন ফিক্স
chmod 700 ~ && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
# 3. Owner চেক - admin ইউজার হলে admin হতে হবে
ls -l ~/.ssh/authorized_keys
# -rw-------. 1 admin admin ... দেখাবে। root root দেখালে ভুল
# 4. ভুল হলে Owner ঠিক করুন
chown -R admin:admin ~/.ssh

এরপর Windows থেকে আবার লগইন করুন:

powershell

ssh -v -i %USERPROFILE%\.ssh\id_ed25519 admin@192.168.1.100 -p 2222

-v দিলে ডিটেইল লগ দেখাবে। Server accepts key দেখালেই সাকসেস।



ssh-copy-id কমান্ড Windows এ ডিফল্টভাবে নাই। এটা Linux/Mac এর টুল। তাই not recognized এরর দিচ্ছে।

Windows এ ssh-copy-id এর ৩টা বিকল্প



মেথড ১: type + ssh দিয়ে ১ লাইনে কপি – সবচেয়ে সহজ

Windows PowerShell বা CMD তে রান করুন:

powershell

type %USERPROFILE%\.ssh\id_ed25519.pub | ssh admin@192.168.1.100 -p 2222 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

ক্লারিফিকেশন:

  1. type %USERPROFILE%\.ssh\id_ed25519.pub = আপনার পাবলিক কী পড়বে
  2. | = পাইপ করে SSH এ পাঠাবে
  3. ssh ... "কমান্ড" = সার্ভারে লগইন করে ~/.ssh বানাবে, পারমিশন ঠিক করবে, কী Append করবে
  4. -p 2222 = আপনার SSH পোর্ট। 22 হলে বাদ দিন

প্রথমবার সার্ভারের পাসওয়ার্ড চাইবে। এরপর থেকে আর লাগবে না।


মেথড ২: ম্যানুয়াল কপি-পেস্ট – ১০০% কাজ করবে

Step 1: Windows এ Public Key কপি করুন

powershell

type %USERPROFILE%\.ssh\id_ed25519.pub

যা আউটপুট আসবে পুরোটা সিলেক্ট করে Ctrl+C দিন। ssh-ed25519 AAAAC3... আপনার_ইমেইল এই রকম এক লাইন হবে।

কী না থাকলে বানান:

powershell

ssh-keygen -t ed25519 -C "admin@ToLearnTeam.com"

৩ বার Enter চাপুন।

Step 2: CentOS সার্ভারে পাসওয়ার্ড দিয়ে লগইন করুন

powershell

ssh admin@192.168.1.100 -p 2222

Step 3: সার্ভারে এই কমান্ডগুলো রান করুন

Bash

# 1. .ssh ফোল্ডার ও ফাইল বানান
mkdir -p ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 2. nano দিয়ে ফাইল ওপেন করুনnano ~/.ssh/authorized_keys

Step 4: Windows থেকে কপি করা কী পেস্ট করুন
nano তে Right Click বা Shift+Insert চাপুন → কী পেস্ট হবে।

গুরুত্বপূর্ণ: কী অবশ্যই এক লাইনে থাকতে হবে। Enter/Line Break থাকলে কাজ করবে না।

Step 5: সেভ করে বের হন
Ctrl+O → Enter → Ctrl+X

Step 6: SELinux ফিক্স – এটা না করলে CentOS এ কাজ করবে না

Bash

restorecon -Rv ~/.ssh

Step 7: লগআউট করে Key দিয়ে টেস্ট করুন

Bash

exit

Windows থেকে:

powershell

ssh -i %USERPROFILE%\.ssh\id_ed25519 admin@192.168.1.100 -p 2222

মেথড ৩: Git Bash বা WSL ইনস্টল করে ssh-copy-id ব্যবহার

আপনি যদি Git ইনস্টল করে থাকেন, তাহলে Git Bash ওপেন করুন। ওখানে ssh-copy-id কাজ করে।

Bash

ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@192.168.1.100 -p 2222

WSL থাকলে: Ubuntu টার্মিনাল ওপেন করে একই কমান্ড রান করুন।


কপি হওয়ার পরও কাজ না করলে এই ৪টা চেক করুন

CentOS সার্ভারে রান করুন:

Bash

# 1. পারমিশন চেক - drwx------ ও -rw------- হতে হবে
ls -ld ~/.sshls -l ~/.ssh/authorized_keys
# 2. Owner চেক - admin admin হতে হবে, root root না
ls -l ~/.ssh/authorized_keys
# 3. ভুল হলে ঠিক করুন
chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys
chown admin:admin ~/.ssh/authorized_keys
# 4. SELinux কনটেক্সট চেক
ls -Z ~/.ssh/authorized_keys
# আউটপুট: unconfined_u:object_r:ssh_home_t:s0 হতে হবে
# 5. sshd_config চেক - PubkeyAuthentication yes আছে কিনা
sudo grep PubkeyAuthentication /etc/ssh/sshd_config

13 lines hidden

ডিবাগ লগ দেখুন:

powershell

ssh -vvv -i %USERPROFILE%\.ssh\id_ed25519 admin@192.168.1.100 -p 2222

Offering public key এবং Server accepts key দেখালে সাকসেস। Permission denied (publickey) আসলে উপরের ৪টা চেক করুন।



Windows থেকে CentOS এ SSH লগইন হচ্ছে না – এটার ৯টা কমন কারণ আছে। একটা একটা করে চেক করি।



Step 1: বেসিক কানেক্টিভিটি টেস্ট করুন

Windows CMD/PowerShell এ রান করুন:

powershell

# 1. সার্ভারে Ping যাচ্ছে কিনা
ping 192.168.1.100
# 2. SSH পোর্ট খোলা আছে কিনা - Telnet Client দিয়ে
telnet 192.168.1.100 22

Could not open connection আসলে ফায়ারওয়াল/নেটওয়ার্ক ইস্যু।
SSH-2.0-OpenSSH_8.x আসলে পোর্ট খোলা আছে।

telnet না থাকলে: Test-NetConnection -ComputerName 192.168.1.100 -Port 22


Step 2: Verbose মোডে এরর দেখুন

এটা সবচেয়ে গুরুত্বপূর্ণ। ঠিক কি এরর হচ্ছে জানতে পারবেন।

powershell

ssh -vvv admin@192.168.1.100 -p 22

আউটপুটের শেষ ১০ লাইন দেখুন। কমন এরর ও ফিক্স:

এরর মেসেজকারণসমাধান
Connection timed outফায়ারওয়াল ব্লকভুল IP/Portsshd বন্ধCentOS এ: sudo firewall-cmd --add-port=22/tcp --permanent && sudo firewall-cmd --reload
sudo systemctl start sshd
Connection refusedsshd চলছে নাCentOS এ: sudo systemctl start sshd && sudo systemctl enable sshd
Permission denied (publickey,password)PasswordAuthentication no করাKey কাজ করছে নাইউজার ভুলCentOS এ: sudo nano /etc/ssh/sshd_config → PasswordAuthentication yes করে টেস্ট করুন
Permission denied (publickey)শুধু Key দিয়ে লগইন এলাও, কিন্তু আপনার কী সেটআপ নাইপাসওয়ার্ড দিয়ে লগইন এনাবল করুন বা কী ঠিকমতো সেট করুন
No such file or directoryভুল কী পাথ-i %USERPROFILE%\.ssh\id_ed25519 ঠিক আছে কিনা চেক করুন

Step 3: CentOS সার্ভারে এই ৭টা জিনিস চেক করুন

সার্ভারে লোকালি লগইন করে বা VMware কনসোল থেকে রান করুন:

3.1. SSH সার্ভিস চলছে কিনা

Bash

sudo systemctl status sshd

active (running) না থাকলে:

Bash

sudo systemctl start sshdsudo systemctl enable sshd

3.2. ফায়ারওয়াল পোর্ট খোলা কিনা

Bash

sudo firewall-cmd --list-ports
sudo firewall-cmd --list-services

পোর্ট 22 বা আপনার কাস্টম পোর্ট না থাকলে:

Bash

sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

3.3. sshd_config এ কি সেট করা

Bash

sudo grep -E "Port|PasswordAuthentication|PermitRootLogin|PubkeyAuthentication" /etc/ssh/sshd_config

সেফ ডিফল্ট টেস্টের জন্য:

INI

Port 22
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication yes

চেঞ্জ করার পর: sudo systemctl restart sshd

3.4. ইউজার লক বা শেল নাই কিনা

Bash

sudo cat /etc/passwd | grep admin
sudo passwd -S admin

আউটপুট: admin PS দেখাবে। LK বা NP দেখালে লক। আনলক করুন:

Bash

sudo usermod -U admin
sudo passwd admin

3.5. /var/log/secure লগ দেখুন – আসল এরর এখানে থাকে

Bash

sudo tail -f /var/log/secure

এবার Windows থেকে SSH করুন। এই টার্মিনালে লাইভ এরর দেখাবে।

কমন লগ মেসেজ:

  1. Authentication refused: bad ownership or modes for directory /home/admin → chmod 700 /home/admin && chmod 700 ~/.ssh
  2. Failed password for admin → পাসওয়ার্ড ভুল
  3. User admin not allowed because shell /sbin/nologin → sudo usermod -s /bin/bash admin

3.6. SELinux ব্লক করছে কিনা

Bash

sudo getenforce
sudo ausearch -m avc -ts recent | grep ssh

denied দেখালে:

Bash

sudo restorecon -Rv /home/admin/.ssh
sudo setsebool -P use_nfs_home_dirs 1  # NFS হোম হলে

3.7. /etc/hosts.deny বা /etc/hosts.allow

Bash

cat /etc/hosts.deny

sshd: ALL থাকলে আপনার IP ব্লক। ফাইল খালি করে দিন বা /etc/hosts.allow এ sshd: YOUR_PC_IP অ্যাড করুন।


Step 4: পাসওয়ার্ড দিয়ে লগইন টেস্ট করুন – Key এর ঝামেলা বাদ দিয়ে

আগে নিশ্চিত হন পাসওয়ার্ড দিয়ে কাজ করে কিনা।

CentOS এ:

Bash

sudo nano /etc/ssh/sshd_config

এই ২টা লাইন নিশ্চিত করুন:

INI

PasswordAuthentication yes
PubkeyAuthentication yes

Bash

sudo systemctl restart sshd

Windows থেকে:

powershell

ssh admin@192.168.1.100

পাসওয়ার্ড চাইবে। দিলে লগইন হবে।

যদি পাসওয়ার্ড দিয়েও না হয়: তাহলে নেটওয়ার্ক/ফায়ারওয়াল/sshd সার্ভিস ইস্যু। Step 1-3 আবার করুন।

যদি পাসওয়ার্ড দিয়ে হয় কিন্তু Key দিয়ে না হয়: তাহলে authorized_keys পারমিশন বা SELinux ইস্যু। আগের রিপ্লাই এর মেথড ২ ফলো করুন।


কুইক ফিক্স কমান্ড – CentOS এ রান করুন

এটা রান করলে ৯০% SSH ইস্যু ফিক্স হয়ে যায়:

Bash

sudo systemctl start sshd
sudo systemctl enable sshd
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config
sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
sudo systemctl restart sshd
sudo restorecon -Rv /home

এরপর Windows থেকে ssh admin@192.168.1.100 ট্রাই করুন।



debug3: fail to open file:C:/Users/HP/.ssh/ssh_config এটা কোনো এরর না। এটা শুধু ইনফো যে ssh_config ফাইল নাই। SSH এটা ছাড়াই কাজ করে।



আসল সমস্যা এই লাইনের পরে আসবে। Permission denied বা Connection timed out এরকম কিছু।

সম্পূর্ণ ssh -vvv আউটপুটের শেষ ২০ লাইন দিন

শুধু ssh_config এর লাইন দেখে সমস্যা বোঝা যাবে না। নিচের কমান্ড রান করে পুরো আউটপুট দিন:

powershell

ssh -vvv admin@192.168.1.100 -p 22

কি দেখতে হবে:

১. যদি Connection timed out দেখায়:

Text

debug1: connect to address 192.168.1.100 port 22: Connection timed out

কারণ: ফায়ারওয়াল ব্লক করছে, বা IP ভুল, বা sshd বন্ধ
ফিক্স CentOS এ:

Bash

sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
ip a  # IP ঠিক আছে কিনা চেক করুন

২. যদি Connection refused দেখায়:

Text

debug1: connect to address 192.168.1.100 port 22: Connection refused

কারণ: sshd চলছে না
ফিক্স CentOS এ:

Bash

sudo systemctl start sshd
sudo ss -tulpn | grep :22  # পোর্ট 22 লিসেন করছে কিনা দেখুন

৩. যদি Permission denied (publickey,password) দেখায়:

Text

debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,passwordd
ebug1: No more authentication methods to try.
admin@192.168.1.100: Permission denied (publickey,password).

কারণ: ১. পাসওয়ার্ড ভুল ২. PasswordAuthentication no করা ৩. ইউজার লক
ফিক্স CentOS এ:

Bash

sudo nano /etc/ssh/sshd_config
# PasswordAuthentication yes করে দিন
sudo systemctl restart sshd
sudo passwd admin  
# পাসওয়ার্ড রিসেট করুন

৪. যদি Permission denied (publickey) দেখায়:

Text

debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
admin@192.168.1.100: Permission denied (publickey).

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


Quick Test: পাসওয়ার্ড দিয়ে হয় কিনা চেক করুন

CentOS এ:

Bash

sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_configsudo systemctl restart sshd

Windows থেকে:

powershell

ssh admin@192.168.1.100

পাসওয়ার্ড চাইলে admin ইউজারের পাসওয়ার্ড দিন।

যদি পাসওয়ার্ড দিয়েও না হয়: তাহলে CentOS এর /var/log/secure চেক করুন:

Bash

sudo tail -f /var/log/secure

এরপর Windows থেকে SSH করুন। লাইভ এরর দেখাবে।


Windows এর ssh_config ফাইল বানাতে চাইলে – অপশনাল

এটা না থাকলেও SSH চলে। তবুও বানাতে চাইলে:

powershell

notepad $env:USERPROFILE\.ssh\config

ফাইলে পেস্ট করুন:

Code

Host centos-server    
HostName 192.168.1.100    
Port 22    
User admin    
IdentityFile C:/Users/HP/.ssh/id_ed25519

সেভ করুন। এখন শুধু ssh centos-server লিখলেই কানেক্ট হবে।

The post CentOS 9 এ SSH Server কিভাবে সেটআপ ও Hardening করবেন? Key-Based Login সহ ফুল বাংলা গাইড 2026 appeared first on To Learn Team.

]]>
CentOS 9 এ Telnet Server কিভাবে ইনস্টল ও কনফিগার করবেন? xinetd সহ ফুল বাংলা গাইড 2026 https://tolearnteam.com/centos-telnet-server-client-setup-bangla-xinetd/ Wed, 05 Aug 2026 14:26:26 +0000 http://tolearnteam.com/?p=2070 ভূমিকা: Telnet কি এবং কেন এখনো শিখবেন? Telnet হলো একটি পুরানো নেটওয়ার্ক প্রোটোকল যা দিয়ে রিমোট সার্ভারে কমান্ড-লাইন অ্যাক্সেস নেওয়া যায়। পোর্ট 23 ব্যবহার করে। সতর্কীকরণ: Telnet ইনসিকিউর!Telnet এর সব ডাটা,…

The post CentOS 9 এ Telnet Server কিভাবে ইনস্টল ও কনফিগার করবেন? xinetd সহ ফুল বাংলা গাইড 2026 appeared first on To Learn Team.

]]>
ভূমিকা: Telnet কি এবং কেন এখনো শিখবেন?

Telnet হলো একটি পুরানো নেটওয়ার্ক প্রোটোকল যা দিয়ে রিমোট সার্ভারে কমান্ড-লাইন অ্যাক্সেস নেওয়া যায়। পোর্ট 23 ব্যবহার করে।

সতর্কীকরণ: Telnet ইনসিকিউর!
Telnet এর সব ডাটা, ইউজারনেম, পাসওয়ার্ড প্লেইন টেক্সটে যায়। হ্যাকাররা নেটওয়ার্ক স্নিফ করে সহজেই চুরি করতে পারে। প্রোডাকশন সার্ভারে কখনো Telnet ব্যবহার করবেন না। SSH হলো মডার্ন ও সিকিউর বিকল্প।

তাহলে কেন শিখবেন?

  1. একাডেমিক পারপাস: পুরানো লিগ্যাসি সিস্টেম, নেটওয়ার্কিং ল্যাব, CCNA/CCNP কোর্সে এখনো Telnet লাগে।
  2. Troubleshooting: অনেক নেটওয়ার্ক ডিভাইস যেমন সুইচ, রাউটারে শুধু Telnet এনাবল থাকে।
  3. Conceptual Understanding: xinetd সুপার সার্ভার কিভাবে কাজ করে সেটা শেখার জন্য Telnet বেস্ট উদাহরণ।

এই আর্টিকেলে যা শিখবেন:

  1. CentOS 9 এ Telnet Server ও Client ইনস্টল
  2. xinetd দিয়ে Telnet সার্ভিস কনফিগার
  3. /etc/xinetd.d/telnet ফাইলের স্ট্রাকচার
  4. Firewalld দিয়ে পোর্ট 23 ওপেন করা
  5. Telnet ক্লায়েন্ট দিয়ে টেস্টিং
  6. একাডেমিক আলোচনা: Telnet vs SSH, xinetd এর কাজ

১. পূর্বশর্ত

বিষয়প্রয়োজনক্লারিফিকেশন
OSCentOS Stream 9 / RHEL 9 / AlmaLinux 9CentOS 7 এর কমান্ড আলাদা হবে
ইউজারroot অথবা sudo এক্সেসসিস্টেম ফাইল এডিট করতে লাগবে
নেটওয়ার্কসার্ভারের IP জানা থাকতে হবেip a কমান্ড দিয়ে চেক করুন
প্যাকেজtelnet-server, xinetd, telnetসার্ভার, সুপার ডেমন, ক্লায়েন্ট

স্পেশাল ইনস্ট্রাকশন: এই পুরো টেস্ট VM বা Internal Lab এ করবেন। পাবলিক IP তে Telnet চালু করা চরম বিপজ্জনক।


২. Step 1: প্রয়োজনীয় প্যাকেজ ইনস্টল করুন

CentOS 9 এ Telnet ২টি প্যাকেজে ভাগ করা: telnet হলো ক্লায়েন্ট, telnet-server হলো সার্ভার।

2.1. সার্ভার ও xinetd ইনস্টল

Bash

sudo dnf update -y
sudo dnf install telnet-server xinetd telnet -y

ক্লারিফিকেশন:

  1. telnet-server: আসল ডেমন। এটা /usr/sbin/in.telnetd ফাইল ইনস্টল করে।
  2. xinetd: Extended Internet Services Daemon। এটা পোর্ট 23 এ শুনে রাখে। কেউ কানেক্ট করলে in.telnetd চালু করে।
  3. telnet: ক্লায়েন্ট প্যাকেজ। অন্য সার্ভারে টেস্ট করার জন্য।

2.2. ইনস্টল ভেরিফাই করুন

rpm -qa | grep telnet
rpm -qa | grep xinetd
ls -l /usr/sbin/in.telnetd

আউটপুট আসবে:

Code

telnet-server-0.17-85.el9.x86_64
telnet-0.17-85.el9.x86_64
xinetd-2.3.15-32.el9.x86_64
-rwxr-xr-x. 1 root root 44416 Jan 10 2025 /usr/sbin/in.telnetd

in.telnetd ফাইল না পেলে ইনস্টল হয়নি।


৩. Step 2: xinetd দিয়ে Telnet সার্ভিস কনফিগার

CentOS 9 এ systemd socket নাই, তাই xinetd মাস্ট।

3.1. Telnet কনফিগ ফাইল তৈরি করুন

Bash

sudo nano /etc/xinetd.d/telnet

ফাইলে নিচের কনটেন্ট হুবহু পেস্ট করুন:

INI

#default: off

#description: The telnet server serves telnet sessions

service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
instances = 60
}

ডিরেক্টরি স্ট্রাকচার ও ফাইল ক্লারিফিকেশন:

লাইনকাজবিশেষ নোট
service telnetসার্ভিসের নাম ডিফাইন করে/etc/services এ telnet 23/tcp থাকতে হবে
disable = noসার্ভিস এনাবল করেyes থাকলে xinetd এই সার্ভিস লোড করবে না
server = /usr/sbin/in.telnetdকোন প্রোগ্রাম রান হবেএটা ভুল হলে is not executable এরর দিবে
user = rootin.telnetd root হিসেবে রান হবেTelnet এ লগইন করার পর আপনার ইউজারে সুইচ হবে
instances = 60একসাথে 60 টা কানেকশন এলাওDDoS প্রতিরোধের জন্য লিমিট

সেভ করুন: Ctrl + O → Enter → Ctrl + X

3.2. xinetd চালু ও এনাবল করুন

sudo systemctl start xinetd
sudo systemctl enable xinetd
sudo systemctl status xinetd

Active: active (running) দেখাতে হবে। এরর থাকলে sudo journalctl -u xinetd -n 50 দেখুন।


৪. Step 3: ফায়ারওয়াল কনফিগার করুন

ডিফল্টভাবে CentOS এর firewalld পোর্ট 23 ব্লক করে রাখে।

sudo firewall-cmd –permanent –add-port=23/tcp
sudo firewall-cmd –reload
sudo firewall-cmd –list-ports

ক্লারিফিকেশন: --permanent দিলে রিবুটের পরও রুল থাকবে। --reload দিয়ে নতুন রুল অ্যাক্টিভ করুন।


৫. Step 4: Telnet সার্ভিস টেস্ট করুন

5.1. লোকালহোস্ট থেকে টেস্ট

সার্ভারের ভিতরেই টেস্ট করুন:

Bash

sudo ss -tulpn | grep :23

আউটপুট:

Code

tcp LISTEN 0 64 *:23 *:* users:(("xinetd",pid=1234,fd=5))

এটা দেখালে xinetd পোর্ট 23 এ শুনছে।

এবার কানেক্ট করুন:

Bash

telnet localhost

login: প্রম্পট আসবে। নন-রুট ইউজার দিয়ে লগইন করুন।

গুরুত্বপূর্ণ: CentOS এ ডিফল্টভাবে root ইউজার Telnet দিয়ে লগইন করতে পারে না। /etc/securetty ফাইলে pts/0 অ্যাড করতে হয়, কিন্তু এটা সিকিউরিটি রিস্ক। তাই নরমাল ইউজার বানান:

Bash

sudo adduser testuser
sudo passwd testuser

5.2. অন্য মেশিন থেকে টেস্ট

আপনার পিসি বা অন্য লিনাক্স থেকে:

Bash

telnet 192.168.1.100 # এখানে আপনার সেন্টওএস সার্ভারের IP দিন

ip a কমান্ড দিয়ে সার্ভারের IP বের করুন।

লগইন সাকসেস হলে who বা w কমান্ড দিয়ে দেখুন:

Code

testuser pts/1 2026-08-05 18:30 (192.168.1.50)

৬. Step 5: Telnet Client ব্যবহার

ক্লায়েন্ট প্যাকেজ দিয়ে অন্য ডিভাইসে কানেক্ট করতে পারবেন।

সিনট্যাক্স:

Bash

telnet [hostname/IP] [port]

উদাহরণ:

  1. ডিফল্ট পোর্ট 23 এ কানেক্ট:

Bash

telnet 10.0.0.5
  1. অন্য পোর্ট টেস্ট করা – পোর্ট খোলা আছে কিনা চেক:

Bash

telnet google.com 80

Connected to google.com দেখালে পোর্ট 80 ওপেন। এটা নেটওয়ার্ক ট্রাবলশুটিং এর জন্য Telnet এর সবচেয়ে বৈধ ব্যবহার।
3. বের হওয়া: Ctrl + ] চাপুন, তারপর quit লিখে Enter দিন।


৭. একাডেমিক আলোচনা: Telnet vs SSH এবং xinetd এর ভূমিকা

7.1. কেন Telnet বাদ দিয়ে SSH ব্যবহার করবেন?

ফিচারTelnetSSH – Secure Shell
এনক্রিপশননাই। সব প্লেইন টেক্সটAES, ChaCha20 দিয়ে এনক্রিপ্টেড
পোর্ট2322
Authenticationশুধু পাসওয়ার্ডপাসওয়ার্ড + Public Key
Data IntegrityনাইHMAC দিয়ে ভেরিফাই করে
ব্যবহারল্যাব, পুরানো ডিভাইসসব প্রোডাকশন সার্ভার

সিদ্ধান্ত: Telnet হলো পোস্টকার্ড পাঠানো। রাস্তায় যে কেউ পড়তে পারবে। SSH হলো সিল করা খামে চিঠি পাঠানো।

7.2. xinetd কি? কেন দরকার?

xinetd হলো “Super Server”। আগে প্রতিটা সার্ভিস যেমন FTP, Telnet, TFTP এর জন্য আলাদা ডেমন মেমোরিতে চলত। এতে RAM নষ্ট হতো।

xinetd সব পোর্টে একাই শুনে থাকে। যখন পোর্ট 23 এ রিকোয়েস্ট আসে, তখনই শুধু in.telnetd প্রোগ্রাম চালু করে। কাজ শেষে আবার বন্ধ করে দেয়। এতে রিসোর্স সেভ হয়।

মডার্ন সিস্টেমে: systemd এই কাজ socket activation দিয়ে করে। তাই xinetd এখন লিগ্যাসি। কিন্তু কনসেপ্ট বোঝার জন্য জরুরি।

7.3. ডিরেক্টরি স্ট্রাকচার

  1. /etc/xinetd.conf: মেইন কনফিগ ফাইল। গ্লোবাল সেটিংস থাকে।
  2. /etc/xinetd.d/: ডিরেক্টরি। প্রতিটা সার্ভিসের জন্য আলাদা ফাইল। telnet, tftp, rsync ইত্যাদি।
  3. /usr/sbin/in.telnetd: আসল Telnet ডেমন বাইনারি।
  4. /etc/services: পোর্ট নাম্বার vs সার্ভিস নামের ম্যাপিং। telnet 23/tcp এখানে ডিফাইন করা।

৮. Telnet ডিজেবল করা – সিকিউরিটি বেস্ট প্র্যাকটিস

কাজ শেষ হলে অবশ্যই বন্ধ করুন:

sudo systemctl stop xinetd
sudo systemctl disable xinetd
sudo firewall-cmd –permanent –remove-port=23/tcp
sudo firewall-cmd –reload

অথবা /etc/xinetd.d/telnet ফাইলে disable = yes করে systemctl restart xinetd দিন।


৯. উপসংহার

আপনি এখন CentOS 9 এ Telnet সার্ভার ও ক্লায়েন্ট কনফিগার করতে পারেন। xinetd এর কনফিগারেশন, ফায়ারওয়াল রুল, এবং সিকিউরিটি ইমপ্লিকেশন সবই জানলেন।

মনে রাখবেন: শুধু শেখার জন্য Telnet ব্যবহার করুন। যেকোনো রিয়েল সার্ভারের জন্য SSH ব্যবহার বাধ্যতামূলক।

সিরিজের পরবর্তী পর্ব: CentOS এ SSH Server Hardening - Key-Based Authentication ও Port Change। সেখানে আমরা সিকিউর রিমোট অ্যাক্সেস শিখব।

ToLearnTeam.com এর সাথে থাকুন। কোনো এরর পেলে কমেন্টে জানান। Happy Learning!


প্রশ্ন: আপনার ল্যাবে কি Telnet সাকসেসফুলি রান করেছে? ss -tulpn | grep :23 এর আউটপুট কি এসেছে?



আপনি যদি VMware বা VirtualBox এ CentOS চালান, তাহলে মাউস কার্সর VM এর ভিতরে “আটকে যায়”। এটা নরমাল। বের করার উপায়:



১. VirtualBox এ কার্সর বের করা

শর্টকাট কী: Right Ctrl চাপুন

মানে কিবোর্ডের ডান পাশের Ctrl কী। একবার চাপলেই কার্সর VM থেকে বের হয়ে আপনার মূল OS এ চলে আসবে।

নোট: VirtualBox এর নিচে ডান কোণায় দেখবেন Right Ctrl লেখা আছে। সেটাই Host Key।

যদি কাজ না করে:
VirtualBox → File → Preferences → Input → Host Key Combination চেক করুন। ওখানে অন্য কী সেট করা থাকতে পারে।

২. VMware Workstation/Player এ কার্সর বের করা

শর্টকাট কী: Ctrl + Alt একসাথে চাপুন

Ctrl + Alt চাপলেই কার্সর রিলিজ হবে।

আরও সহজ: মাউস VM উইন্ডোর বাইরে নিয়ে গেলেই অটো রিলিজ হয়ে যায়, যদি VMware Tools ইনস্টল থাকে।

৩. VMware Tools / VirtualBox Guest Additions ইনস্টল করলে সুবিধা

এই দুইটা ইনস্টল করলে মাউস আর আটকাবে না। Seamless ভাবে VM থেকে Host এ যাওয়া-আসা করবে।

CentOS এ VMware Tools ইনস্টল:

Bash

sudo dnf install open-vm-tools open-vm-tools-desktop -y
sudo reboot

VirtualBox Guest Additions ইনস্টল:

Bash

sudo dnf install kernel-devel kernel-headers gcc make perl -y
sudo dnf install epel-release -y
sudo dnf install dkms -y

তারপর VirtualBox মেনু থেকে Devices → Insert Guest Additions CD Image → CentOS এ মাউন্ট করে VBoxLinuxAdditions.run রান করুন।

৪. যদি CLI তে থাকেন, মাউস লাগে না

CentOS Minimal Install হলে GUI নাই, শুধু টার্মিনাল। সেখানে মাউসের দরকার নাই। Tab, Arrow key, Ctrl + C, Ctrl + Z দিয়ে কাজ করবেন।

টার্মিনাল থেকে বের হতে: exit লিখে Enter দিন। SSH হলে সেশন ক্লোজ হবে।


সারসংক্ষেপ:

সফটওয়্যারকার্সর বের করার কী
VirtualBoxRight Ctrl
VMwareCtrl + Alt
KVM/QEMUCtrl + Alt + G


No match for argument: xinetd এরর মানে CentOS Stream 9 / RHEL 9 এর ডিফল্ট রিপোতে xinetd প্যাকেজ নাই।



Red Hat 9 থেকে xinetd ডিপ্রিকেটেড করে দিয়েছে। তাই dnf install xinetd কাজ করবে না।

সমাধান: ২টা উপায় আছে


উপায় ১: EPEL রিপো থেকে xinetd ইনস্টল করুন – সহজ

EPEL = Extra Packages for Enterprise Linux। এখানে xinetd এখনো আছে।

Bash

# 1. EPEL রিপো এনাবল করুন
sudo dnf install epel-release -y

# 2. আপডেট করুন
sudo dnf update -y

# 3. এখন xinetd ইনস্টল হবে
sudo dnf install xinetd telnet-server telnet -y

ইনস্টল শেষে আগের মতোই /etc/xinetd.d/telnet ফাইল বানিয়ে কনফিগ করুন।


উপায় ২: systemd socket দিয়ে Telnet চালান – মডার্ন, xinetd লাগবে না

CentOS 9 এ এটাই রেকমেন্ডেড। xinetd ছাড়াই কাজ করবে।

Step 1: telnet-server ইনস্টল করুন

Bash

sudo dnf install telnet-server -y

Step 2: systemd socket ফাইল বানান

Bash

sudo nano /etc/systemd/system/telnet.socket

এই কনটেন্ট পেস্ট করুন:

INI



[Unit]
Description=Telnet Server Socket
PartOf=telnet.service

[Socket]
ListenStream=23
Accept=yes

[Install]
WantedBy=sockets.target

Step 3: systemd service ফাইল বানান

Bash

sudo nano /etc/systemd/system/telnet@.service

এই কনটেন্ট পেস্ট করুন:

INI



[Unit]
Description=Telnet Server
After=network.target

[Service]
ExecStart=-/usr/sbin/in.telnetd
StandardInput=socket
StandardOutput=socket
User=root
Group=root

[Install]
WantedBy=multi-user.target

Step 4: সার্ভিস চালু করুন

Bash

sudo systemctl daemon-reload
sudo systemctl start telnet.socket
sudo systemctl enable telnet.socket

Step 5: ফায়ারওয়াল ওপেন করুন

Bash

sudo firewall-cmd --permanent --add-port=23/tcp
sudo firewall-cmd --reload

Step 6: চেক করুন

Bash

sudo ss -tulpn | grep :23

আউটপুট:

Code

tcp LISTEN 0 64 *:23 *:* users:(("systemd",pid=1,fd=XX))

এখন telnet localhost দিয়ে টেস্ট করুন।


কোনটা ব্যবহার করবেন?

মেথডকখন ব্যবহার করবেনসুবিধা
EPEL + xinetdপুরানো ডকুমেন্টেশন ফলো করছেন, ল্যাবে টেস্টক্লাসিক মেথড, সহজ
systemd socketCentOS 9 / RHEL 9, প্রোডাকশন স্ট্যান্ডার্ডমডার্ন, Red Hat রেকমেন্ডেড, xinetd লাগে না

আমার রেকমেন্ডেশন: CentOS 9 এ উপায় ২ ব্যবহার করুন। xinetd এখন obsolete।

গুরুত্বপূর্ণ ফাইল লোকেশন

ফাইলমেথড ১ – xinetdমেথড ২ – systemd
কনফিগ/etc/xinetd.d/telnet/etc/systemd/system/telnet.socket
ডেমন/usr/sbin/in.telnetd/usr/sbin/in.telnetd
চালু করার কমান্ডsystemctl start xinetdsystemctl start telnet.socket

কুইক ফিক্স কমান্ড – CentOS 9 এর জন্য:

Bash

sudo dnf install epel-release -y && sudo dnf install xinetd telnet-server -y && echo 'service telnet { disable = no; flags = REUSE; socket_type = stream; wait = no; user = root; server = /usr/sbin/in.telnetd; }' | sudo tee /etc/xinetd.d/telnet && sudo systemctl restart xinetd && sudo firewall-cmd --permanent --add-port=23/tcp && sudo firewall-cmd --reload

এটা রান করলেই কাজ হবে। এরর আসলে cat /etc/os-release এর আউটপুট দিন।



Windows এ ডিফল্টভাবে telnet ক্লায়েন্ট ডিজেবল থাকে। তাই telnet is not recognized এরর দেয়।

Windows এ Telnet Client চালু করার ৩টা উপায়


উপায় ১: Control Panel দিয়ে – সবচেয়ে সহজ

Windows 10 / 11 এর জন্য:

  1. Start Menu → control panel লিখে সার্চ করুন → Control Panel ওপেন করুন
  2. Programs → Programs and Features এ ক্লিক করুন
  3. বাম পাশে Turn Windows features on or off এ ক্লিক করুন
  4. লিস্ট থেকে Telnet Client খুঁজে বের করে টিক দিন ☑
  5. OK চাপুন → ইনস্টল হতে ১ মিনিট লাগবে
  6. PC রিস্টার্ট লাগবে না

ইনস্টল শেষে টেস্ট করুন:

cmd

telnet 192.168.1.100

এখন কাজ করবে।


উপায় ২: PowerShell কমান্ড দিয়ে – ১ লাইনে

Admin PowerShell ওপেন করুন:

  1. Start → PowerShell লিখুন → Run as Administrator এ ক্লিক করুন
  2. এই কমান্ড রান করুন:

powershell

Enable-WindowsOptionalFeature -Online -FeatureName TelnetClient
  1. Y চেপে রিস্টার্ট দিন যদি চায়

উপায় ৩: CMD দিয়ে – DISM কমান্ড

Admin CMD ওপেন করুন:

  1. Start → cmd লিখুন → Run as administrator
  2. এই কমান্ড রান করুন:

cmd

dism /online /Enable-Feature /FeatureName:TelnetClient

ইনস্টলের পর CentOS সার্ভারে টেস্ট করুন

Windows CMD ওপেন করে:

cmd

telnet 192.168.1.100

এখানে 192.168.1.100 হলো আপনার CentOS সার্ভারের IP।

IP বের করতে CentOS এ রান করুন:

Bash

ip a | grep inet

সাকসেস হলে দেখাবে:

Code

CentOS Stream 9
Kernel 5.14.0 on an x86_64
login:

ইউজারনেম testuser দিয়ে লগইন করুন। root দিয়ে লগইন হবে না, এটা নরমাল।


গুরুত্বপূর্ণ সিকিউরিটি নোট

  1. Telnet ইনসিকিউর: পাসওয়ার্ড প্লেইন টেক্সটে যায়। শুধু ল্যাবে ব্যবহার করুন।
  2. Windows এ Telnet Server নাই: শুধু Client আছে। সার্ভার বানাতে লিনাক্স লাগবে।
  3. বিকল্প: PuTTY ডাউনলোড করুন। এটা Telnet + SSH দুটোই সাপোর্ট করে। putty.org থেকে ফ্রি।

কমন এরর

এররকারণসমাধান
Could not open connection to the host, on port 23CentOS ফায়ারওয়াল ব্লক করছেTelnet সার্ভিস চালু নাইCentOS এ: sudo firewall-cmd --add-port=23/tcp --permanent && sudo firewall-cmd --reload
sudo systemctl restart xinetd
Login incorrectroot দিয়ে লগইন করার চেষ্টানন-রুট ইউজার বানান: sudo adduser testuser

The post CentOS 9 এ Telnet Server কিভাবে ইনস্টল ও কনফিগার করবেন? xinetd সহ ফুল বাংলা গাইড 2026 appeared first on To Learn Team.

]]>
Complete Article: CentOS Linux ইনস্টলেশন – স্টেপ বাই স্টেপ ফুল গাইড https://tolearnteam.com/centos-stream-9-install-bangla-tutorial-step-by-step/ Wed, 05 Aug 2026 14:03:27 +0000 http://tolearnteam.com/?p=2065 ভূমিকা: CentOS কি এবং কেন শিখবেন? CentOS Stream হলো Red Hat Enterprise Linux (RHEL) এর আপস্ট্রিম ডেভেলপমেন্ট প্ল্যাটফর্ম। এন্টারপ্রাইজ লেভেল সার্ভার, ওয়েব হোস্টিং, ডেটাবেস সার্ভার চালানোর জন্য CentOS সবচেয়ে স্টেবল ও…

The post Complete Article: CentOS Linux ইনস্টলেশন – স্টেপ বাই স্টেপ ফুল গাইড appeared first on To Learn Team.

]]>
ভূমিকা: CentOS কি এবং কেন শিখবেন?

CentOS Stream হলো Red Hat Enterprise Linux (RHEL) এর আপস্ট্রিম ডেভেলপমেন্ট প্ল্যাটফর্ম। এন্টারপ্রাইজ লেভেল সার্ভার, ওয়েব হোস্টিং, ডেটাবেস সার্ভার চালানোর জন্য CentOS সবচেয়ে স্টেবল ও সিকিউর ডিস্ট্রোগুলোর একটি।

গুরুত্বপূর্ণ নোট: CentOS 8 EOL হয়ে গেছে। এখন CentOS Stream 9 হলো কারেন্ট ভার্সন। এটা RHEL 9 এর আপস্ট্রিম। প্রোডাকশনের জন্য অনেকে Rocky Linux বা AlmaLinux ব্যবহার করে, কিন্তু CentOS Stream সিস্টেম অ্যাডমিন শেখার জন্য বেস্ট।

এই আর্টিকেলে যা শিখবেন:

  1. ISO ডাউনলোড ও বুটেবল মিডিয়া তৈরি
  2. VMware/VirtualBox এ VM কনফিগার
  3. Anaconda Installer দিয়ে স্টেপ-বাই-স্টেপ ইনস্টল
  4. Manual Partition: LVM, /boot, /, swap এর বেস্ট প্র্যাকটিস
  5. Network, Hostname, User ও Root সেটআপ
  6. Minimal vs Server with GUI ইনস্টলেশনের পার্থক্য
  7. একাডেমিক আলোচনা: RHEL Ecosystem ও RPM প্যাকেজ ম্যানেজমেন্ট

১. পূর্বশর্ত ও প্রয়োজনীয় জিনিসপত্র

বিষয়প্রয়োজনক্লারিফিকেশন
ISO ফাইলCentOS-Stream-9-latest-x86_64-dvd1.iso ∼9GBঅফিসিয়াল সাইট: mirror.stream.centos.org
RAMমিনিমাম 2GB, রেকমেন্ডেড 4GBGUI এর জন্য 4GB+ লাগবে
Diskমিনিমাম 20GB, রেকমেন্ডেড 40GB+LVM ব্যবহার করলে পরে বাড়ানো যায়
CPU2 Core64-bit x86_64 আর্কিটেকচার
HypervisorVMware Workstation, VirtualBox, Proxmoxফিজিক্যাল সার্ভারেও একই প্রসেস
নেটওয়ার্কNAT বা Bridgedইনস্টলের সময় আপডেট নামানোর জন্য

স্পেশাল ইনস্ট্রাকশন: প্রোডাকশন সার্ভারে সবসময় Minimal Install ব্যবহার করবেন। GUI সার্ভারে রিসোর্স নষ্ট করে ও সিকিউরিটি রিস্ক বাড়ায়।


২. Step 1: ISO ডাউনলোড ও VM তৈরি

2.1. ISO ডাউনলোড

অফিসিয়াল মিরর থেকে ডাউনলোড করুন:

Bash

wget https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/iso/CentOS-Stream-9-latest-x86_64-dvd1.iso

ক্লারিফিকেশন: dvd1.iso তে সব প্যাকেজ থাকে। boot.iso শুধু নেটওয়ার্ক ইনস্টলের জন্য।

2.2. VMware/VirtualBox সেটিংস

VMware Workstation:

  1. Create New Virtual Machine → Custom → Next
  2. Installer disc image file → CentOS ISO সিলেক্ট করুন
  3. Guest OS: Linux → Version: Red Hat Enterprise Linux 9 64-bit
  4. RAM: 4096 MB, CPU: 2 Core
  5. Disk: 40GB, Store as single file
  6. Network: NAT
  7. Finish এর আগে Customize Hardware → Display → 3D acceleration টিক তুলে দিন।

VirtualBox:

  1. New → Name: CentOS-9, Type: Linux, Version: Red Hat 64-bit
  2. Memory: 4096 MB, Processors: 2
  3. Hard disk: Create 40GB VDI, Dynamically allocated
  4. Settings → Storage → Empty তে ISO মাউন্ট করুন
  5. Network → Adapter 1: NAT

৩. Step 2: Anaconda Installer দিয়ে ইনস্টলেশন

VM স্টার্ট করলে বুট মেনু আসবে। Install CentOS Stream 9 সিলেক্ট করে Enter দিন।

3.1. ভাষা ও কিবোর্ড

  1. Welcome Screen: English → Continue. সার্ভারে সবসময় English ব্যবহার করা বেস্ট প্র্যাকটিস।
  2. Installation Summary স্ক্রিন আসবে। এখান থেকে সব কনফিগার করতে হবে।

3.2. Keymap, Time & Date

  1. Keyboard: English (US) ঠিক আছে কিনা চেক করুন।
  2. Time & Date: Region: Asia, City: Dhaka. Network Time: On করুন। NTP সার্ভার টাইম সিঙ্ক করবে।
    ক্লারিফিকেশন: সার্ভারে সঠিক টাইম না থাকলে SSL, Kerberos, লগ সব ভুল হবে।

3.3. Software Selection – সবচেয়ে গুরুত্বপূর্ণ

Software Selection এ ক্লিক করুন।

অপশনকখন ব্যবহার করবেনডিস্ক সাইজ
Minimal Installপ্রোডাকশন সার্ভার, ওয়েব, ডাটাবেস∼1.5GB
ServerCLI সার্ভার + কমন টুলস∼2.5GB
Server with GUIশিখার জন্য, GUI দরকার হলে∼5GB+
Workstationডেস্কটপ হিসেবে ব্যবহার∼6GB+

রেকমেন্ডেশন: Minimal Install সিলেক্ট করুন। Add-Ons থেকে Standard এবং Guest Agents টিক দিন। এটা VMware Tools ইনস্টল করবে।

3.4. Installation Destination – Manual Partition

এটা সবচেয়ে ক্রিটিক্যাল স্টেপ। Installation Destination এ ক্লিক করুন।

  1. আপনার 40GB ডিস্ক সিলেক্ট করুন।
  2. Storage Configuration: Custom সিলেক্ট করে Done দিন।
  3. Manual Partitioning স্ক্রিন আসবে। LVM সিলেক্ট করুন।

প্রোডাকশন স্ট্যান্ডার্ড পার্টিশন টেবিল:

Mount PointSizeDevice TypeFile Systemক্লারিফিকেশন
/boot1 GBStandard Partitionxfsকার্নেল ও grub ফাইল থাকে। LVM এর বাইরে রাখতে হয়।
/boot/efi600 MBStandard PartitionEFI Systemশুধু UEFI সিস্টেমের জন্য। BIOS হলে লাগবে না।
/20 GBLVMxfsরুট ফাইল সিস্টেম। OS ও সফটওয়্যার।
/home10 GBLVMxfsইউজার ডাটা। আলাদা রাখলে OS রি-ইনস্টলে ডাটা সেফ থাকে।
swap4 GBLVMswapRAM এর 1x থেকে 2x। 4GB RAM হলে 4GB swap যথেষ্ট।
Free Space∼5 GBLVMভবিষ্যতে / বা /var বাড়ানোর জন্য রাখুন।

LVM কেন ব্যবহার করবেন? Logical Volume Management দিয়ে পরে পার্টিশন রিসাইজ করা যায় সার্ভার বন্ধ না করে। এটা এন্টারপ্রাইজ স্ট্যান্ডার্ড।

Click + দিয়ে একটা একটা করে বানান। সব শেষে Done → Accept Changes দিন।

3.5. Network & Host Name

  1. Network & Host Name এ ক্লিক করুন।
  2. Ethernet On করুন। IP অটো DHCP থেকে পাবে।
  3. Host Name: centos9-server.ToLearnTeam.local দিন → Apply.
  4. Configure → IPv4 Settings → Manual দিয়ে স্ট্যাটিক IP সেট করতে পারেন প্রোডাকশনে।
    উদাহরণ: Address: 10.0.0.100, Netmask: 255.255.255.0, Gateway: 10.0.0.1, DNS: 8.8.8.8

3.6. Root Password ও User Creation

  1. Root Password সেট করুন। খুব স্ট্রং পাসওয়ার্ড দিন। Lock root account টিক তুলে দিন।
  2. User Creation → নতুন ইউজার বানান। যেমন: admin। Make this user administrator টিক দিন। এটা wheel গ্রুপে অ্যাড করবে, ফলে sudo ব্যবহার করতে পারবে।
    স্পেশাল ইনস্ট্রাকশন: সরাসরি root দিয়ে লগইন করা সিকিউরিটি রিস্ক। সবসময় নন-রুট ইউজার + sudo ব্যবহার করুন।

সব Done হলে Begin Installation এ ক্লিক করুন। ১০-২০ মিনিট লাগবে।


৪. Step 3: পোস্ট ইনস্টলেশন টাস্ক

ইনস্টল শেষে Reboot System দিন। ISO ফাইল আনমাউন্ট করুন না হলে আবার ইনস্টলার চালু হবে।

4.1. প্রথম লগইন ও সিস্টেম আপডেট

admin ইউজার দিয়ে লগইন করুন।

Bash

sudo dnf update -y

ক্লারিফিকেশন: dnf হলো CentOS 9 এর ডিফল্ট প্যাকেজ ম্যানেজার। yum এর আপগ্রেডেড ভার্সন। -y মানে সব প্রশ্নে yes।

4.2. প্রয়োজনীয় প্যাকেজ ইনস্টল

মিনিমাল ইনস্টলে অনেক বেসিক টুল থাকে না। ইনস্টল করুন:

Bash

sudo dnf install vim wget curl net-tools bash-completion tree git -y
প্যাকেজকাজ
vimঅ্যাডভান্সড টেক্সট এডিটর
net-toolsifconfig, netstat কমান্ডের জন্য
bash-completionTab চাপলে কমান্ড অটো-কমপ্লিট হবে
treeডিরেক্টরি স্ট্রাকচার দেখার জন্য

4.3. ফায়ারওয়াল ও SELinux চেক

Bash

sudo systemctl status firewalld  # Active দেখাবে
sudo getenforce                  # Enforcing দেখাবে

ক্লারিফিকেশন: firewalld ও SELinux সেন্টওএস এর মেইন সিকিউরিটি ফিচার। প্রোডাকশনে কখনো ডিজেবল করবেন না। কনফিগার করতে শিখুন।

4.4. IP ও হোস্টনেম ভেরিফাই করুন

Bash

ip a                    # IP অ্যাড্রেস দেখাবে
hostnamectl             # হোস্টনেম, OS ভার্সন দেখাবে
ping -c 4 google.com    # ইন্টারনেট আছে কিনা চেক

৫. একাডেমিক আলোচনা: CentOS Ecosystem ও ডিরেক্টরি স্ট্রাকচার

5.1. RHEL Ecosystem এ CentOS এর অবস্থান

CentOS Stream হলো “Rolling Preview” of RHEL। Red Hat প্রথমে CentOS Stream এ ফিচার টেস্ট করে, তারপর সেটা RHEL এ স্টেবল রিলিজ হিসেবে যায়।
ফ্লো: Fedora → CentOS Stream → RHEL → AlmaLinux/Rocky Linux

এজন্য CentOS Stream শিখলে আপনি RHEL, Alma, Rocky সবই কভার করছেন। চাকরির বাজারে এটাই চায়।

5.2. Linux ডিরেক্টরি স্ট্রাকচার – FHS Standard

ইনস্টলের পর এই ডিরেক্টরিগুলো বোঝা জরুরি:

/ # রুট ডিরেক্টরি, সবকিছুর মূল
/bin # বেসিক ইউজার কমান্ড: ls, cp, mv
/sbin # সিস্টেম অ্যাডমিন কমান্ড: fdisk, iptables
/etc # সব কনফিগ ফাইল: /etc/ssh/sshd_config
/home # ইউজার হোম ডিরেক্টরি: /home/admin
/var # ভেরিয়েবল ডাটা: লগ /var/log, ওয়েব /var/www
/usr # ইউজার প্রোগ্রাম ও লাইব্রেরি
/boot # কার্নেল, grub বুটলোডার ফাইল
/tmp # টেম্পোরারি ফাইল, রিবুটে মুছে যায়
/opt # থার্ড পার্টি সফটওয়্যার

5.3. RPM প্যাকেজ ম্যানেজমেন্ট

CentOS .rpm প্যাকেজ ব্যবহার করে। dnf হলো হাই-লেভেল টুল।

sudo dnf install nginx # ইনস্টল
sudo dnf remove nginx # রিমুভ
sudo dnf search nginx # সার্চ
sudo dnf info nginx # ডিটেইল দেখা

একাডেমিক তাৎপর্য: Debian/Ubuntu apt ও .deb ব্যবহার করে। দুটো সিস্টেমই জানা থাকলে আপনি যেকোনো লিনাক্স সার্ভার ম্যানেজ করতে পারবেন।


৬. কমন এরর ও ট্রাবলশুটিং

সমস্যাকারণসমাধান
Pane is deadGUI ইনস্টলে RAM কমVM এ 4GB+ RAM দিন
No network during installNAT/Bridged সিলেক্ট করা নাইVM সেটিংসে Network Adapter এনাবল করুন
Warning: /dev/root does not existLVM/পার্টিশন এররManual Partition আবার করুন, /boot Standard Partition রাখুন
X startup failedServer with GUI তে ড্রাইভার ইস্যুMinimal Install দিয়ে CLI ব্যবহার করুন

৭. উপসংহার ও পরবর্তী ধাপ

আপনি এখন সফলভাবে CentOS Stream 9 ইনস্টল করে একটি বেসিক সার্ভার রেডি করেছেন। LVM পার্টিশন, নেটওয়ার্ক, ইউজার ম্যানেজমেন্ট সহ সবকিছু প্রোডাকশন স্ট্যান্ডার্ড মেনে করা হয়েছে।

সিরিজের পরবর্তী পর্ব: CentOS 9 Initial Server Setup - SSH, Firewalld, SELinux কনফিগারেশন। সেখানে আমরা সার্ভারকে ইন্টারনেটে এক্সপোজ করার জন্য সিকিউর করব।

ToLearnTeam.com এর সাথে থাকুন। আপনার প্রশ্ন কমেন্টে জানান।

The post Complete Article: CentOS Linux ইনস্টলেশন – স্টেপ বাই স্টেপ ফুল গাইড appeared first on To Learn Team.

]]>
লিনাক্স সার্ভার কনফিগারেশন পার্ট-১: ইউজার ও অ্যাকাউন্ট ম্যানেজমেন্ট [A-Z গাইড] https://tolearnteam.com/linux-user-account-management-bangla-tutorial/ Tue, 04 Aug 2026 15:57:15 +0000 http://tolearnteam.com/?p=2028 লিনাক্স সার্ভারের নিরাপত্তার প্রথম ধাপ হলো সঠিক ইউজার ম্যানেজমেন্ট। root ইউজার দিয়ে সব কাজ করা ঝুঁকিপূর্ণ। তাই এই টিউটোরিয়ালে আমরা শিখব কিভাবে নতুন ইউজার বানাবেন, পারমিশন দেবেন এবং সিকিউরিটি নিশ্চিত করবেন। প্রয়োজনীয়…

The post লিনাক্স সার্ভার কনফিগারেশন পার্ট-১: ইউজার ও অ্যাকাউন্ট ম্যানেজমেন্ট [A-Z গাইড] appeared first on To Learn Team.

]]>
লিনাক্স সার্ভারের নিরাপত্তার প্রথম ধাপ হলো সঠিক ইউজার ম্যানেজমেন্ট। root ইউজার দিয়ে সব কাজ করা ঝুঁকিপূর্ণ। তাই এই টিউটোরিয়ালে আমরা শিখব কিভাবে নতুন ইউজার বানাবেন, পারমিশন দেবেন এবং সিকিউরিটি নিশ্চিত করবেন।

প্রয়োজনীয় প্যাকেজ: passwd, shadow-utils – এগুলো সাধারণত সব ডিস্ট্রোতে ডিফল্টভাবে থাকে।

Step 1: নতুন ইউজার তৈরি করা – useradd

এটি সবচেয়ে গুরুত্বপূর্ণ কমান্ড।

Bash

sudo useradd -m -s /bin/bash tolearn

ব্যাখ্যা:

  • sudo: অ্যাডমিন রাইট নিয়ে কমান্ড রান করা
  • useradd: নতুন ইউজার তৈরির কমান্ড
  • -m: ইউজারের জন্য /home/tolearn হোম ডিরেক্টরি তৈরি করবে
  • -s /bin/bash: ইউজারের ডিফল্ট শেল bash সেট করবে
  • tolearn: নতুন ইউজারের নাম

ডিরেক্টরি স্ট্রাকচার যা তৈরি হবে:

/home/
└── tolearn/ <– নতুন ইউজারের হোম
├── .bashrc
├── .profile
└── .bash_logout

গুরুত্বপূর্ণ ফাইল আপডেট হয়: /etc/passwd, /etc/shadow, /etc/group

Step 2: ইউজারের পাসওয়ার্ড সেট করা – passwd

ইউজার তৈরি করলেই সে লগইন করতে পারবে না। পাসওয়ার্ড সেট করতে হবে।

Bash

sudo passwd tolearn

এন্টার দেওয়ার পর নতুন পাসওয়ার্ড ২ বার দিতে বলবে।

Step 3: সব ইউজারের লিস্ট দেখা

Bash

cat /etc/passwd | cut -d: -f1

অথবা শুধু রিয়েল ইউজার দেখতে:

awk -F: ‘$3 >= 1000 && $1 != “nobody” {print $1}’ /etc/passwd

ব্যাখ্যা: UID 1000 থেকে সাধারণ ইউজার শুরু হয়।

Step 4: ইউজারের তথ্য পরিবর্তন – usermod

ইউজারকে sudo গ্রুপে যোগ করা:

Bash

sudo usermod -aG sudo tolearn

-aG: Append to Group. এটা না দিলে আগের সব গ্রুপ মুছে যাবে।

ইউজারের হোম ডিরেক্টরি চেঞ্জ:

Bash

sudo usermod -d /var/www/tolearn -m tolearn

Step 5: ইউজার অ্যাকাউন্ট ডিজেবল/এনাবল করা

১. পাসওয়ার্ড লক করে ডিজেবল:

sudo passwd -l tolearn # Lock
sudo passwd -u tolearn # Unlock

২. অ্যাকাউন্ট এক্সপায়ার করে ডিজেবল:

sudo chage -E 2026-01-01 tolearn # এই তারিখের পর লগইন বন্ধ
sudo chage -E -1 tolearn # আবার এনাবল করা

৩. শেল পরিবর্তন করে লগইন বন্ধ:

Bash

sudo usermod -s /sbin/nologin tolearn

Step 6: পারমিশন ও মালিকানা – chmod ও chown

ধরুন tolearn ইউজারকে /var/www/project ফোল্ডারের মালিকানা দিতে চান:

sudo chown -R tolearn:tolearn /var/www/project
sudo chmod -R 755 /var/www/project

ব্যাখ্যা:

  • chown -R: Recursively মালিকানা পরিবর্তন
  • tolearn:tolearn: ইউজার:গ্রুপ
  • chmod 755: Owner-এর সব রাইট, Group ও Others-এর Read+Execute

Step 7: ইউজার ডিলিট করা – userdel

Bash

sudo userdel -r tolearn

-r: হোম ডিরেক্টরি সহ ডিলিট করবে। সাবধান! ডেটা মুছে যাবে।


3. বোনাস টিপস: আমার সাজেশন

আপনার সিরিজে এই ২টা টপিক অবশ্যই যোগ করবেন:

  1. Sudoers File: /etc/sudoers ফাইল visudo দিয়ে এডিট করে পাসওয়ার্ড ছাড়া নির্দিষ্ট কমান্ড চালানোর পারমিশন দেওয়া।
  2. Password Policy: chage কমান্ড দিয়ে পাসওয়ার্ড কতদিন পর পর চেঞ্জ করতে হবে সেট করা। sudo chage -M 90 tolearn = ৯০ দিন পর পাসওয়ার্ড এক্সপায়ার।

4. সিরিজের পরবর্তী পর্বের আইডিয়া

Part-2: লিনাক্স ফাইল পারমিশন ও ACL মাস্টারক্লাস
Part-3: SSH Key-Based Authentication সেটআপ

The post লিনাক্স সার্ভার কনফিগারেশন পার্ট-১: ইউজার ও অ্যাকাউন্ট ম্যানেজমেন্ট [A-Z গাইড] appeared first on To Learn Team.

]]>