Linux in Bangla Archives - To Learn Team https://tolearnteam.com/category/linux-in-bangla/ 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 Linux in Bangla Archives - To Learn Team https://tolearnteam.com/category/linux-in-bangla/ 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.

]]>
Telnet কি? Linux সার্ভারে Telnet Server ইনস্টল, কনফিগার ও সিকিউরিটি রিস্ক https://tolearnteam.com/linux-telnet-server-configuration-bangla-tutorial/ Wed, 05 Aug 2026 12:14:39 +0000 http://tolearnteam.com/?p=2056 ভূমিকা: Telnet কি এবং কেন এটি এখন পড়বেন? গুরুত্বপূর্ণ সতর্কতা: Telnet একটি অত্যন্ত অনিরাপদ প্রোটোকল। এটি আপনার ইউজারনেম, পাসওয়ার্ড, কমান্ড সহ সবকিছু প্লেইন টেক্সটে পাঠায়। প্রোডাকশন সার্ভারে কখনোই Telnet ব্যবহার…

The post Telnet কি? Linux সার্ভারে Telnet Server ইনস্টল, কনফিগার ও সিকিউরিটি রিস্ক appeared first on To Learn Team.

]]>
ভূমিকা: Telnet কি এবং কেন এটি এখন পড়বেন?

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

Telnet (Teletype Network) হলো একটি Application Layer প্রোটোকল যা 1969 সালে RFC 15 এর মাধ্যমে ডেভেলপ করা হয়। এটি TCP পোর্ট 23 ব্যবহার করে রিমোট কম্পিউটারে ভার্চুয়াল টার্মিনাল অ্যাক্সেস দেয়।

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

  1. Ubuntu/CentOS/RHEL এ Telnet Server ইনস্টল ও কনফিগার
  2. Firewall ও SELinux সেটিংস
  3. Telnet এর ডিরেক্টরি স্ট্রাকচার ও ফাইল
  4. একাডেমিক সিকিউরিটি অ্যানালাইসিস ও Wireshark প্র্যাকটিক্যাল
  5. Telnet vs SSH এর বিস্তারিত তুলনা

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

পূর্বশর্ত:

  1. একটি Linux সার্ভার: Ubuntu 22.04 / CentOS 9 / RHEL 9
  2. sudo বা root অ্যাক্সেস
  3. ২টি মেশিন: একটি সার্ভার, একটি ক্লায়েন্ট টেস্টের জন্য

প্রয়োজনীয় প্যাকেজ:

প্যাকেজের নামকাজইনস্টল কমান্ড
telnet-serverTelnet ডেমন in.telnetd চালায়CentOS/RHEL এ লাগে
telnetdUbuntu তে সার্ভার প্যাকেজUbuntu/Debian এ লাগে
xinetdSuper Server Daemon, পোর্ট 23 এ রিকোয়েস্ট আসলে telnetd চালু করেসব ডিস্ট্রোতে লাগে
telnetক্লায়েন্ট, অন্য সার্ভারে কানেক্ট করার জন্যসব ডিস্ট্রোতে লাগে

ইনস্টলেশন কমান্ড:

Ubuntu 22.04 / Debian 12:

sudo apt update
sudo apt install telnetd xinetd telnet -y

CentOS 9 / RHEL 9 / Rocky Linux:

Bash

sudo dnf install telnet-server telnet xinetd -y

ক্লারিফিকেশন: telnet-server প্যাকেজটি শুধু সার্ভার মেশিনে লাগবে। যে মেশিন থেকে কানেক্ট করবেন সেটায় শুধু telnet ক্লায়েন্ট হলেই হবে।


২. ডিরেক্টরি স্ট্রাকচার ও গুরুত্বপূর্ণ ফাইল

Telnet কনফিগার করার সময় এই ফাইলগুলো সম্পর্কে জানা জরুরি:

/etc/xinetd.d/telnet # Telnet সার্ভিস কনফিগারেশন। এখানে disable = no করতে হয়।
/etc/xinetd.conf # xinetd এর গ্লোবাল সেটিংস। সব সার্ভিসের জন্য কমন।
/etc/services # পোর্ট ডাটাবেস। এখানে telnet 23/tcp লেখা থাকে।
/usr/sbin/in.telnetd # Telnet ডেমনের আসল বাইনারি ফাইল।
/var/log/secure # RHEL/CentOS এ Telnet লগইন/ফেইল লগ থাকে।
/var/log/auth.log # Ubuntu/Debian এ Telnet লগইন/ফেইল লগ থাকে।

৩. স্টেপ বাই স্টেপ কনফিগারেশন

Step 1: Telnet সার্ভিস এনাবল করুন

xinetd এর অধীনে Telnet ডিফল্টভাবে disable থাকে।

Bash

sudo nano /etc/xinetd.d/telnet

ফাইলটি খুলে disable = yes লাইনটি disable = no করে দিন।

ফাইনাল কনফিগারেশন:

INI

#default: on

service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
only_from = 10.0.0.0/24 # স্পেশাল ইনস্ট্রাকশন: শুধু আপনার লোকাল নেটওয়ার্ক এলাও করুন
}

ক্লারিফিকেশন: only_from দিয়ে IP রেস্ট্রিকশন করা সিকিউরিটির জন্য বেস্ট প্র্যাকটিস। wait = no মানে মাল্টি-ইউজার কানেকশন এলাও করবে।

Step 2: xinetd সার্ভিস চালু ও এনাবল করুন

sudo systemctl start xinetd
sudo systemctl enable xinetd
sudo systemctl status xinetd # Active (running) দেখাবে

পোর্ট 23 লিসেন হচ্ছে কিনা চেক করুন:

Bash

sudo ss -tulpn | grep :23

আউটপুট: tcp LISTEN 0 64 *:23 *:* users:(("xinetd",pid=1234,fd=5))

Step 3: ফায়ারওয়াল কনফিগারেশন

পোর্ট 23 ডিফল্টভাবে বন্ধ থাকে। খুলে দিতে হবে।

Ubuntu/UFW:

sudo ufw allow 23/tcp
sudo ufw reload
sudo ufw status

CentOS/RHEL/firewalld:

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

Step 4: SELinux ও ইউজার তৈরি – CentOS/RHEL এর জন্য

Telnet রুট ইউজারকে লগইন করতে দেয় না। একটি টেস্ট ইউজার বানান:

sudo adduser telnetuser
sudo passwd telnetuser # একটি পাসওয়ার্ড দিন, যেমন: Telnet@123

SELinux যদি Enforcing মোডে থাকে, তাহলে পলিসি অ্যাড করতে হতে পারে:

Bash

sudo setsebool -P telnetd_connect_network 1

৪. টেস্টিং ও ব্যবহারের উদাহরণ

ধরুন আপনার সার্ভারের IP: 10.0.0.1। ক্লায়েন্ট মেশিন থেকে কমান্ড দিন:

Bash

telnet 10.0.0.1

সফল আউটপুট:

Trying 10.0.0.1…
Connected to 10.0.0.1.
Escape character is ‘^]’.
Ubuntu 22.04.3 LTS
server01 login: telnetuser
Password:
Welcome to Ubuntu 22.04.3 LTS
telnetuser@server01:~$

সেশন থেকে বের হতে: exit লিখুন অথবা Ctrl + ] চেপে quit লিখুন।


৫. Academic Discussion: Telnet এর সিকিউরিটি অ্যানালাইসিস

৫.১. কেন Telnet অনিরাপদ? OSI মডেলের আলোকে

Telnet OSI Layer 7 – Application Layer এ কাজ করে। এর নিচের লেয়ারগুলোতে কোনো এনক্রিপশন নেই।

Wireshark প্র্যাকটিক্যাল: VM-Beta তে Wireshark চালু করে telnet 10.0.0.1 করুন এবং telnetuser দিয়ে লগইন করুন। Wireshark এ telnet ফিল্টার দিলে দেখবেন:

Code

TELNET Data: Password: Telnet@123

এখানে পাসওয়ার্ডটি সম্পূর্ণ প্লেইন টেক্সটে দেখা যাচ্ছে। এটি CIA Triad এর Confidentiality এবং Integrity দুটোই ভঙ্গ করে।

৫.২. Telnet vs SSH: একাডেমিক তুলনা

বৈশিষ্ট্যTelnetSSH (Secure Shell)একাডেমিক তাৎপর্য
স্ট্যান্ডার্ডRFC 854, 1969RFC 4251, 2006প্রোটোকল বিবর্তন
এনক্রিপশননেইAES-256, ChaCha20Cryptography এর প্রয়োগ
পোর্ট23/TCP22/TCPWell-known ports
অথেনটিকেশনPlaintext PasswordPassword, Public-Key, GSSAPIAuthentication Methods
ব্যান্ডউইথকম লাগেএনক্রিপশনের জন্য বেশিPerformance vs Security Trade-off
আধুনিক ব্যবহার০% প্রোডাকশনে৯৯% প্রোডাকশনেIndustry Standard

একাডেমিক উপসংহার: NIST SP 800-123 এবং ISO/IEC 27001 অনুযায়ী Telnet ব্যবহার করা একটি High Severity Vulnerability। তাই কম্পিউটার নেটওয়ার্ক ও সাইবার সিকিউরিটি কোর্সে Telnet পড়ানো হয় “Legacy Protocol Vulnerability Analysis” এর কেস স্টাডি হিসেবে।


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

এরর মেসেজকারণসমাধান
telnet: Unable to connect to remote host: Connection refusedxinetd চলছে না 2. পোর্ট 23 ফায়ারওয়ালে বন্ধsudo systemctl start xinetd, sudo ufw allow 23/tcp
telnet: Unable to connect to remote host: No route to hostনেটওয়ার্ক সমস্যা বা IP ভুলping 10.0.0.1 দিয়ে চেক করুন
Login incorrectভুল পাসওয়ার্ড 2. রুট দিয়ে লগইন ট্রাই করছেননন-রুট ইউজার ব্যবহার করুন। Telnet রুট এলাও করে না
telnetd: No login program found/usr/sbin/in.telnetd ফাইল মিসিংপ্যাকেজ রি-ইনস্টল করুন: sudo apt install --reinstall telnetd

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

আমরা এই টিউটোরিয়ালে ল্যাব এনভায়রনমেন্টে Telnet সেটআপ করা শিখলাম এবং একাডেমিক দৃষ্টিকোণ থেকে এর সিকিউরিটি রিস্ক অ্যানালাইসিস করলাম।

ফাইনাল রেকমেন্ডেশন: লিগ্যাসি সিস্টেম মেইনটেইন করা ছাড়া কখনোই Telnet ব্যবহার করবেন না। প্রোডাকশন সার্ভারের জন্য SSH একমাত্র নিরাপদ অপশন।

সিরিজের পরবর্তী পর্ব: SSH Key-Based Authentication in Linux - পাসওয়ার্ড ছাড়া সিকিউর লগইন। সেখানে আমরা শিখব কিভাবে ssh-keygen ও ssh-copy-id ব্যবহার করে সবচেয়ে সিকিউর উপায়ে সার্ভারে লগইন করতে হয়।

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


nano কি এবং কেন ব্যবহার করবেন?

বিষয়ব্যাখ্যা
পুরো নামGNU nano
কাজটার্মিনালের ভিতরেই .txt, .conf, .sh এর মতো ফাইল তৈরি ও এডিট করা
কেন জনপ্রিয়খুবই সহজ, Notepad এর মতো 2. সব লিনাক্সে ডিফল্ট থাকে 3. মাউস লাগে না
বিকল্পvi/vim, emacs, micro। কিন্তু vim নতুনদের জন্য কঠিন

nano এর বেসিক ব্যবহার – Telnet ফাইলের উদাহরণে

আপনি যখন এই কমান্ড দেন:

Bash

sudo nano /etc/xinetd.d/telnet

১. ইন্টারফেস দেখতে কেমন:

GNU nano 6.2 /etc/xinetd.d/telnet

default: on

service telnet
{
disable = yes
flags = REUSE
socket_type = stream


^G Help ^O Write Out ^W Where Is ^K Cut ^T Execute
^X Exit ^R Read File ^\ Replace ^U Paste ^J Justify

নিচে ^X মানে Ctrl + X। এগুলোই শর্টকাট।

২. সবচেয়ে দরকারি ৫টি শর্টকাট:

শর্টকাটকাজকখন লাগবে
Ctrl + OWrite Out = ফাইল সেভ করাএডিট করার পর সেভ করতে
Ctrl + XExit = nano থেকে বের হওয়াকাজ শেষ হলে
Ctrl + WWhere Is = কোনো লেখা খোঁজাdisable লাইনটা খুঁজতে
Ctrl + KCut = লাইন কেটে দেওয়া/ডিলিটকোনো লাইন মুছতে
Ctrl + UPaste = কাট করা লাইন পেস্টলাইন কপি-পেস্ট করতে

৩. Telnet ফাইল এডিট করার সম্পূর্ণ প্রসেস:

Step 1: ফাইল ওপেন করুন

Bash

sudo nano /etc/xinetd.d/telnet

Step 2: Ctrl + W চাপুন, তারপর disable লিখে Enter দিন। কার্সর disable = yes লাইনে চলে যাবে।

Step 3: yes কেটে no লিখুন। এখন হবে disable = no

Step 4: Ctrl + O চাপুন → Enter চাপুন → ফাইল সেভ হবে

Step 5: Ctrl + X চাপুন → nano থেকে বের হয়ে যাবেন

nano vs vim: নতুনদের জন্য কোনটা?

ফিচারnanovim
শেখা2 মিনিটে শেখা যায়2 সপ্তাহ লাগতে পারে
বের হওয়াCtrl + X:q! বা :wq – অনেকে আটকে যায়
মোডকোনো মোড নেই, ডাইরেক্ট টাইপNormal, Insert, Visual মোড আছে
কাদের জন্যবিগিনার, সার্ভার কনফিগপ্রো ডেভেলপার, দ্রুত কোডিং

সারসংক্ষেপ: nano হলো লিনাক্সের Notepad। কনফিগ ফাইল এডিট করার সবচেয়ে সহজ উপায়। sudo দিয়ে ওপেন করলে সিস্টেম ফাইল এডিট করতে পারবেন।

GNU nano 6.2 শুধু দেখাচ্ছে এবং ফাইল খালি, মানে /etc/xinetd.d/telnet ফাইলটা এখনো তৈরি হয়নি।

কেন এমন হচ্ছে?

১. telnet-server ইনস্টল করেননি
Ubuntu তে telnetd ইনস্টল করলে সবসময় এই ফাইল অটো তৈরি হয় না।
২. ফাইলের নাম ভুল
৩. xinetd ইনস্টল নেই

সমাধান: স্টেপ বাই স্টেপ

Step 1: প্যাকেজগুলো আছে কিনা চেক করুন

Bash

dpkg -l | grep -E 'telnet|xinetd'

আউটপুটে telnetd এবং xinetd থাকতে হবে। না থাকলে ইনস্টল করুন:

Ubuntu/Debian:

Bash

sudo apt updatesudo apt install telnetd xinetd -y

CentOS/RHEL:

Bash

sudo dnf install telnet-server xinetd -y

Step 2: xinetd.d ডিরেক্টরি আছে কিনা চেক করুন

Bash

ls /etc/xinetd.d/

যদি No such file or directory দেখায়, তাহলে xinetd ইনস্টল হয়নি।

Step 3: ফাইলটি ম্যানুয়ালি তৈরি করুন

প্যাকেজ ইনস্টল করার পরও ফাইল না থাকলে নিজে বানিয়ে নিন:

Bash

sudo nano /etc/xinetd.d/telnet

এবার nano তে এই পুরো কনফিগটা কপি করে পেস্ট করুন:

INI

#default: on

#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 = 100
}

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

Step 4: in.telnetd ফাইল আছে কিনা চেক করুন

xinetd এই বাইনারি ফাইলটা রান করে। লোকেশন চেক করুন:

Bash

ls /usr/sbin/in.telnetd

No such file আসলে telnetd প্যাকেজ ঠিকমতো ইনস্টল হয়নি। রি-ইনস্টল করুন:

Bash

sudo apt install --reinstall telnetd -y

Step 5: সার্ভিস রিস্টার্ট করুন

Bash

sudo systemctl restart xinetdsudo systemctl enable xinetdsudo ss -tulpn | grep :23

*:23 লিসেন দেখালে কাজ শেষ।

সংক্ষেপে আপনার করণীয়:

  1. sudo apt install telnetd xinetd -y রান করুন
  2. sudo nano /etc/xinetd.d/telnet দিয়ে উপরের কনফিগ পেস্ট করুন
  3. sudo systemctl restart xinetd

গুরুত্বপূর্ণ: CentOS 9/RHEL 9 এ telnet-server ডেপ্রিকেটেড। অনেক সময় dnf install telnet-server দিলেও ফাইল আসে না। সেক্ষেত্রে ম্যানুয়ালি বানানোই সমাধান।


sudo ss -tulpn | grep :23 এ কিছু না দেখানো মানে পোর্ট 23 এ কোনো সার্ভিস লিসেন করছে না। অর্থাৎ Telnet/xinetd চালু হয়নি বা এরর খাচ্ছে।

স্টেপ বাই স্টেপ ট্রাবলশুটিং

Step 1: xinetd চলছে কিনা চেক করুন

Bash

sudo systemctl status xinetd

৩ ধরনের আউটপুট আসতে পারে:

Case A: Active: inactive (dead)

Bash

sudo systemctl start xinetd
sudo systemctl enable xinetd

Case B: Active: active (running) কিন্তু পোর্ট 23 নাই
মানে xinetd চলছে কিন্তু telnet সার্ভিস লোড হয়নি। Step 2 দেখুন।

Case C: Failed with result 'exit-code'
কনফিগে এরর আছে। লগ দেখুন:

Bash

sudo journalctl -u xinetd -n 20 --no-pager

Step 2: telnet কনফিগ ফাইল ঠিক আছে কিনা চেক করুন

Bash

cat /etc/xinetd.d/telnet

মাস্ট থাকতে হবে:

INI

service telnet
{    disable = no          # এটা `no` হতে হবে, `yes` হলে চলবে না    
     server  = /usr/sbin/in.telnetd    # এই ফাইল থাকতে হবে
}

in.telnetd ফাইল আছে কিনা চেক করুন:

Bash

ls -l /usr/sbin/in.telnetd

No such file আসলে প্যাকেজ মিসিং:

Bash

# Ubuntu
sudo apt install --reinstall telnetd -y
# CentOS/RHEL
sudo dnf reinstall telnet-server -y

Step 3: xinetd রিস্টার্ট দিয়ে এরর চেক করুন

Bash

sudo systemctl restart xinetd

যদি এরর দেয়, তাহলে ডিটেইল লগ দেখুন:

Bash

sudo journalctl -xeu xinetd

কমন এরর:

  1. line 3: exec of /usr/sbin/in.telnetd failed → telnetd প্যাকেজ ইনস্টল নেই
  2. service/protocol error in /etc/xinetd.d/telnet → ফাইলে সিনট্যাক্স এরর, ব্র্যাকেট মিসিং

Step 4: ম্যানুয়ালি টেস্ট করুন

xinetd ছাড়া in.telnetd চলে কিনা দেখুন:

Bash

sudo /usr/sbin/in.telnetd

যদি in.telnetd: command not found আসে, তাহলে প্যাকেজ ইনস্টল হয়নি।

Step 5: Ubuntu 22.04+ এর স্পেশাল কেস

নতুন Ubuntu তে telnetd ইনস্টল করলেও অনেক সময় systemd socket ইউজ করে। xinetd লাগে না।

চেক করুন systemd socket আছে কিনা:

Bash

sudo systemctl status telnet.socket

যদি থাকে, তাহলে এটা এনাবল করুন:

Bash

sudo systemctl start telnet.socket
sudo systemctl enable telnet.socket

এক্ষেত্রে xinetd লাগবে না। ss -tulpn | grep :23 এ এখন দেখাবে।

কুইক ফিক্স সামারি – Ubuntu এর জন্য

আপনার জন্য সবচেয়ে সহজ সমাধান:

1. পুরানো কনফিগ ক্লিন করুন

sudo systemctl stop xinetd
sudo apt purge telnetd xinetd -y

2. নতুন করে ইনস্টল করুন

sudo apt update
sudo apt install telnetd xinetd -y

3. ফাইল ম্যানুয়ালি বানান

echo ‘service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}’ | sudo tee /etc/xinetd.d/telnet

4. চালু করুন

sudo systemctl restart xinetd
sudo systemctl enable xinetd

5. চেক করুন

sudo ss -tulpn | grep :23

এখন tcp LISTEN 0 64 *:23 *:* users:(("xinetd",...)) দেখাবে।


Server /usr/sbin/in.xinetd is not executable file এরর মানে /etc/xinetd.d/telnet ফাইলে server এর পাথ ভুল লিখেছেন।

আপনি লিখেছেন /usr/sbin/in.xinetd কিন্তু আসল ফাইল হবে /usr/sbin/in.telnetd।

xinetd হলো সুপার সার্ভার, আর in.telnetd হলো আসল telnet ডেমন।

সমাধান: ফাইল এডিট করুন

Step 1: ফাইল ওপেন করুন

Bash

sudo nano /etc/xinetd.d/telnet

Step 2: ভুল লাইন ঠিক করুন

ভুল কনফিগ:

INI

service telnet
{
    disable = no
    server  = /usr/sbin/in.xinetd    # এটা ভুল
}

সঠিক কনফিগ:

INI



service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd # telenetd, xinetd না
log_on_failure += USERID
}

in.xinetd কেটে in.telnetd লিখুন। x এর জায়গায় tel হবে।

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

Step 3: in.telnetd ফাইল আছে কিনা নিশ্চিত হন

Bash

ls -l /usr/sbin/in.telnetd

আউটপুট এমন হওয়া উচিত:

Code

-rwxr-xr-x 1 root root 12345 Jan 10 2025 /usr/sbin/in.telnetd

যদি No such file or directory আসে, তাহলে প্যাকেজ ইনস্টল হয়নি:

Ubuntu/Debian:

Bash

sudo apt install telnetd -y

CentOS/RHEL:

Bash

sudo dnf install telnet-server -y

Step 4: xinetd রিস্টার্ট করুন

Bash

sudo systemctl restart xinetd
sudo systemctl status xinetd

এখন Active: active (running) দেখাবে, এরর থাকবে না।

Step 5: পোর্ট 23 চেক করুন

Bash

sudo ss -tulpn | grep :23

আউটপুট:

Code

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

কেন এই ভুল হয়?

xinetd এবং in.telnetd নাম দুটো কাছাকাছি। xinetd হলো ম্যানেজার, আর in.telnetd হলো ওয়ার্কার। xinetd পোর্ট 23 এ শোনে, কেউ কানেক্ট করলে in.telnetd চালু করে দেয়।

সহজ মনে রাখার উপায়:

  • xinetd = Extended Internet Services Daemon = ম্যানেজার
  • in.telnetd = Internet Telnet Daemon = আসল সার্ভার

কুইক ফিক্স ওয়ান-লাইনার:

Bash

sudo sed -i 's/in\.xinetd/in.telnetd/g' /etc/xinetd.d/telnet && sudo systemctl restart xinetd

এই কমান্ড in.xinetd খুঁজে in.telnetd দিয়ে রিপ্লেস করে xinetd রিস্টার্ট করবে।

The post Telnet কি? Linux সার্ভারে Telnet Server ইনস্টল, কনফিগার ও সিকিউরিটি রিস্ক appeared first on To Learn Team.

]]>
লিনাক্স সার্ভার কনফিগারেশন: বেসিক অপারেশনাল কমান্ড মাস্টারক্লাস https://tolearnteam.com/linux-basic-commands-su-sudo-root-bangla-tutorial/ Tue, 04 Aug 2026 16:36:41 +0000 http://tolearnteam.com/?p=2037 লিনাক্স সার্ভারে কাজ করার আগে ৩টা জিনিস বুঝতেই হবে: ১. আপনি কে? ২. আপনি কোথায়? ৩. আপনার ক্ষমতা কতটুকু? এই পোস্টে আমরা su, sudo, root এবং বেসিক সিস্টেম কমান্ড শিখব। প্রয়োজনীয় প্যাকেজ: sudo, coreutils – এগুলো সব…

The post লিনাক্স সার্ভার কনফিগারেশন: বেসিক অপারেশনাল কমান্ড মাস্টারক্লাস appeared first on To Learn Team.

]]>
লিনাক্স সার্ভারে কাজ করার আগে ৩টা জিনিস বুঝতেই হবে: ১. আপনি কে? ২. আপনি কোথায়? ৩. আপনার ক্ষমতা কতটুকু? এই পোস্টে আমরা su, sudo, root এবং বেসিক সিস্টেম কমান্ড শিখব।

প্রয়োজনীয় প্যাকেজ: sudo, coreutils – এগুলো সব ডিস্ট্রোতে ডিফল্ট থাকে।

Step 1: আপনি কে? – আইডেন্টিটি কমান্ড

১. whoami – আমি কোন ইউজার?

Bash

whoami

আউটপুট: tolearn – বর্তমানে লগইন করা ইউজারের নাম দেখাবে।

২. id – ইউজারের সব ডিটেইল

Bash

id

আউটপুট: uid=1000(tolearn) gid=1000(tolearn) groups=1000(tolearn),27(sudo)
ব্যাখ্যা: uid = ইউজার আইডি, gid = গ্রুপ আইডি, groups = আপনি কোন কোন গ্রুপের সদস্য। sudo গ্রুপে থাকলে অ্যাডমিন কমান্ড চালাতে পারবেন।

Step 2: su vs sudo – অ্যাডমিন হওয়ার ২টি রাস্তা

লিনাক্সে root হলো সর্বময় ক্ষমতার অধিকারী সুপারইউজার। কিন্তু ডিরেক্ট root দিয়ে লগইন করা বিপজ্জনক।

১. su – Switch User

Bash

su - root

ব্যাখ্যা: - দিলে root এর এনভায়রনমেন্ট সহ লগইন হবে। root এর পাসওয়ার্ড লাগবে। Ubuntu তে ডিফল্টভাবে root এর পাসওয়ার্ড সেট করা থাকে না, তাই এটা ফেইল করবে।

২. sudo – Superuser Do – এটাই রেকমেন্ডেড

Bash

sudo apt update

ব্যাখ্যা: শুধু এই একটি কমান্ড root হিসেবে রান হবে। আপনার নিজের পাসওয়ার্ড চাইবে।

৩. sudo -i – root এর ইন্টারেক্টিভ শেল – Ubuntu এর জন্য বেস্ট

Bash

sudo -i

ব্যাখ্যা: su -i নামে কোনো কমান্ড নেই। Ubuntu/Debian এ root হতে sudo -i ব্যবহার করুন। এটা আপনাকে root এর শেল দেবে এবং /root ডিরেক্টরিতে নিয়ে যাবে। বের হতে exit লিখুন।

su vs sudo -i পার্থক্য:

কমান্ডপাসওয়ার্ডলগনিরাপত্তা
su -root এর পাসওয়ার্ডলগ হয় নাকম
sudo -iনিজের পাসওয়ার্ড/var/log/auth.log এ লগ হয়বেশি

Step 3: আপনি কোথায়? – নেভিগেশন কমান্ড

১. pwd – Print Working Directory

Bash

pwd

আউটপুট: /home/tolearn – আপনি এখন কোন ফোল্ডারে আছেন।

২. ls – লিস্ট ফাইল

Bash

ls -lha

ব্যাখ্যা: -l=Details, -h=Human Readable Size, -a=Hidden ফাইল সহ দেখাবে।

৩. cd – Change Directory

Bash

cd /etc       # /etc ফোল্ডারে যানcd ~          # নিজের হোমে যান = /home/tolearncd ..         # এক ধাপ উপরের ফোল্ডারে যান

Step 4: লিনাক্স ডিরেক্টরি স্ট্রাকচার – ৫টি মাস্ট জানা ফোল্ডার

/
├── root/ <– root ইউজারের হোম। sudo -i দিলে এখানে আসবেন। পারমিশন 700
├── home/ <– সব সাধারণ ইউজারের হোম। /home/tolearn/
├── etc/ <– সব কনফিগ ফাইল। sshd_config, passwd এখানেই থাকে
├── var/ <– Variable Data। লগ /var/log/, ওয়েবসাইট /var/www/
└── bin/ <– সব বেসিক কমান্ড। ls, cp, mv এখানে থাকে

গোল্ডেন রুল: /etc বা /var এ কাজ করতে হলে sudo লাগবেই।

Step 5: প্যাকেজ ম্যানেজমেন্ট – সফটওয়্যার ইনস্টল

Ubuntu/Debian এর জন্য apt:

sudo apt update # প্যাকেজ লিস্ট আপডেট
sudo apt upgrade # সব প্যাকেজ আপগ্রেড
sudo apt install htop # htop ইনস্টল
sudo apt remove htop # রিমুভ

CentOS/RHEL এর জন্য yum বা dnf:

sudo yum update
sudo yum install htop

Step 6: অন্যান্য দরকারি বেসিক কমান্ড

clear # টার্মিনাল পরিষ্কার
history # আগে কী কমান্ড দিয়েছেন
man ls # যেকোনো কমান্ডের ম্যানুয়াল। q চেপে বের হবেন
reboot # সার্ভার রিস্টার্ট। sudo লাগবে
poweroff # সার্ভার বন্ধ। sudo লাগবে
df -h # ডিস্ক স্পেস চেক
free -h # RAM চেক
top / htop # চলমান প্রসেস দেখা। q চেপে বের হবেন


3. সিরিজের পরবর্তী পর্ব

Part-1: ইউজার ও অ্যাকাউন্ট ম্যানেজমেন্ট – এই বেসিক কমান্ড ব্যবহার করে useradd দিয়ে নতুন ইউজার বানানো শিখব।

গট ইট! আপনার Part-0: বেসিক অপারেশনাল কমান্ড পোস্টে restart, shutdown এবং অন্যান্য দরকারি সিস্টেম কমান্ড অ্যাড করে ফাইনাল আপডেটেড ভার্সন দিলাম।


2. পোস্ট কনটেন্ট: আপডেটেড সেকশন

লিনাক্স সার্ভার কনফিগারেশন: বেসিক অপারেশনাল কমান্ড মাস্টারক্লাস

Step 6: সিস্টেম কন্ট্রোল – Restart, Shutdown ও অন্যান্য

সার্ভার মেইনটেনেন্সের জন্য এই কমান্ডগুলো সবচেয়ে বেশি লাগবে। সতর্কতা: সবগুলোতে sudo লাগবে।

১. reboot – সার্ভার রিস্টার্ট

Bash

sudo reboot

ব্যাখ্যা: সার্ভার সাথে সাথে রিস্টার্ট হবে। কার্নেল আপডেট বা কনফিগ চেঞ্জের পর লাগে।

২. shutdown – সার্ভার বন্ধ করা

sudo shutdown now # এখনই বন্ধ
sudo shutdown -h +10 # ১০ মিনিট পর বন্ধ। -h = halt
sudo shutdown -r 22:00 # রাত ১০টায় রিস্টার্ট। -r = reboot
sudo shutdown -c # শিডিউল করা শাটডাউন ক্যান্সেল

৩. systemctl – আধুনিক সার্ভিস কন্ট্রোল – সবচেয়ে গুরুত্বপূর্ণ
init.d এর বদলে এখন systemd ব্যবহার হয়।

sudo systemctl reboot # reboot কমান্ডের আধুনিক ভার্সন
sudo systemctl poweroff # shutdown কমান্ডের আধুনিক ভার্সন
sudo systemctl status ssh # ssh সার্ভিস চলছে কিনা দেখা
sudo systemctl restart nginx # nginx রিস্টার্ট দেওয়া
sudo systemctl enable docker # সার্ভার অন হলে docker অটো চালু হবে

৪. অন্যান্য দরকারি সিস্টেম কমান্ড

কমান্ডকাজউদাহরণ
uptimeকতক্ষণ ধরে সার্ভার চলছেuptime -p
uname -aকার্নেল ও OS তথ্যuname -r = শুধু কার্নেল ভার্সন
hostnamectlHostname চেঞ্জ ও OS তথ্যsudo hostnamectl set-hostname server1
dateসার্ভারের সময় দেখাdate -s "2026-08-05 10:00:00"
timedatectlটাইমজোন সেট করাsudo timedatectl set-timezone Asia/Dhaka
df -hডিস্ক স্পেস চেকdf -h / = রুট পার্টিশন
free -hRAM ও Swap চেকfree -m = MB তে দেখাবে
top / htopলাইভ CPU/RAM ব্যবহারsudo apt install htop লাগবে
ps auxসব চলমান প্রসেসps aux \| grep nginx
killপ্রসেস বন্ধ করাsudo kill -9 1234 = PID 1234 কে জোর করে বন্ধ
wget / curlফাইল ডাউনলোডwget https://example.com/file.zip
tarফাইল Zip/Unziptar -czvf backup.tar.gz /var/www

Step 7: লিনাক্স ডিরেক্টরি স্ট্রাকচার – আপডেটেড লিস্ট

ডিরেক্টরিকী থাকেকেন দরকার
/rootroot ইউজারের হোমsudo -i দিলে এখানে আসবেন
/homeসব ইউজারের পার্সোনাল ফোল্ডার/home/tolearn/
/etcসব কনফিগ ফাইলsshd_config, passwd, nginx
/varলগ, ওয়েবসাইট, ডেটাবেজ/var/log/auth.log, /var/www/
/usrইউজার প্রোগ্রাম/usr/bin/python3
/bin /sbinবেসিক কমান্ডls, reboot, shutdown
/tmpটেম্পোরারি ফাইলরিস্টার্ট দিলে মুছে যায়
/optথার্ড-পার্টি সফটওয়্যারGoogle Chrome, XAMPP

Special Instruction for Ubuntu: Ubuntu তে ডিফল্ট root অ্যাকাউন্ট লক থাকে। তাই su - কাজ করবে না। sudo passwd root দিয়ে প্রথমে root এর পাসওয়ার্ড সেট করতে হবে। কিন্তু এটা নিরাপত্তার জন্য রেকমেন্ডেড না। সবসময় sudo -i ব্যবহার করুন।


3. কমপ্লিট কমান্ড চিটশিট: কপি-পেস্ট করুন

আইডেন্টিটি

whoami
id
sudo -i # root হওয়া

নেভিগেশন

pwd
ls -lha
cd /etc

সিস্টেম কন্ট্রোল

sudo reboot
sudo shutdown now
sudo systemctl status nginx
uptime
df -h
free -h
top

প্যাকেজ

sudo apt update && sudo apt upgrade
sudo apt install htop

The post লিনাক্স সার্ভার কনফিগারেশন: বেসিক অপারেশনাল কমান্ড মাস্টারক্লাস appeared first on To Learn Team.

]]>
লিনাক্স সার্ভার কনফিগারেশন পার্ট-৩: SSH Key-Based Authentication ও সার্ভার হার্ডেনিং https://tolearnteam.com/linux-ssh-key-authentication-server-hardening-bangla/ Tue, 04 Aug 2026 16:04:26 +0000 http://tolearnteam.com/?p=2034 পাসওয়ার্ড দিয়ে SSH লগইন করা হলো বাড়ির দরজায় তালা না দিয়ে চিরকুটে পাসওয়ার্ড লিখে রাখার মতো। Brute-force অ্যাটাক দিয়ে যেকোনো সময় হ্যাক হতে পারে। সমাধান: SSH Key। প্রয়োজনীয় প্যাকেজ: openssh-server, openssh-client, fail2ban Step…

The post লিনাক্স সার্ভার কনফিগারেশন পার্ট-৩: SSH Key-Based Authentication ও সার্ভার হার্ডেনিং appeared first on To Learn Team.

]]>
পাসওয়ার্ড দিয়ে SSH লগইন করা হলো বাড়ির দরজায় তালা না দিয়ে চিরকুটে পাসওয়ার্ড লিখে রাখার মতো। Brute-force অ্যাটাক দিয়ে যেকোনো সময় হ্যাক হতে পারে। সমাধান: SSH Key।

প্রয়োজনীয় প্যাকেজ: openssh-server, openssh-client, fail2ban

Step 1: SSH Key Pair তৈরি করা – ssh-keygen

আপনার লোকাল পিসি/ল্যাপটপ থেকে রান করুন, সার্ভারে না:

Bash

ssh-keygen -t ed25519 -C "tolearn@my-laptop"

ব্যাখ্যা:

  • -t ed25519: সবচেয়ে সিকিউর ও আধুনিক অ্যালগরিদম। RSA এর চেয়ে ভালো
  • -C: কমেন্ট, কোন মেশিনের কী সেটা বোঝার জন্য

এন্টার চাপলে এটি ২টি ফাইল তৈরি করবে:

/home/your-user/.ssh/
├── id_ed25519 # Private Key: এটা TOP SECRET, কাউকে দেবেন না
└── id_ed25519.pub # Public Key: এটা সার্ভারে দিতে হবে

Special Instruction: Passphrase চাইলে খালি রাখতে পারেন, তবে Passphrase দিলে আরও সিকিউর।

Step 2: সার্ভারে Public Key কপি করা – ssh-copy-id

এটাই সবচেয়ে সহজ উপায়। tolearn ইউজার দিয়ে সার্ভারে লগইন করার জন্য:

Bash

ssh-copy-id tolearn@10.0.0.1

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

Manual পদ্ধতি যদি ssh-copy-id না থাকে:

Bash

cat ~/.ssh/id_ed25519.pub | ssh tolearn@10.0.0.1 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

সার্ভারে যে ডিরেক্টরি ও ফাইল তৈরি হবে:

/home/tolearn/.ssh/
└── authorized_keys # পারমিশন 600 হতে হবে

চেক করুন: chmod 700 ~/.ssh এবং chmod 600 ~/.ssh/authorized_keys

কেন এবং কীভাবে কাজ করে:

1. সিনারিও:

আপনার ল্যাপটপ = 192.168.1.100 <– এখান থেকে কমান্ড দেবেন
সার্ভার VM-Alpha = 10.0.0.1 <– এখানে key যাবে

2. স্টেপ-বাই-স্টেপ:

Step-A: আপনার ল্যাপটপ/পিসিতে Key বানান

আপনার উইন্ডোজ/লিনাক্স/ম্যাক ল্যাপটপের টার্মিনালে

ssh-keygen -t ed25519 -C "my-laptop"

এটা ~/.ssh/id_ed25519.pub ফাইল বানাবে আপনার ল্যাপটপে।

Step-B: ল্যাপটপ থেকেই Key সার্ভারে পাঠান

আবার আপনার ল্যাপটপ থেকেই রান করুন

ssh-copy-id tolearn@10.0.0.1

এটা প্রথমবার tolearn ইউজারের পাসওয়ার্ড চাইবে। দেওয়ার পর আপনার ল্যাপটপের id_ed25519.pub ফাইলটি সার্ভারের /home/tolearn/.ssh/authorized_keys ফাইলে কপি হয়ে যাবে।

Step-C: টেস্ট করুন – ল্যাপটপ থেকে

Bash

ssh tolearn@10.0.0.1

এবার আর পাসওয়ার্ড চাইবে না।

গুরুত্বপূর্ণ ৩টি পয়েন্ট:

প্রশ্নউত্তর
কমান্ড কোথায় রান করব?আপনার লোকাল পিসি/ল্যাপটপে। যেখান থেকে সার্ভারে লগইন করতে চান।
সার্ভারে রান করলে কী হবে?এরর দেবে। কারণ সার্ভারের পাবলিক কী আপনার ল্যাপটপে পাঠানোর দরকার নেই।
Windows হলে কী করব?Windows 10/11 এ PowerShell বা Git Bash ওপেন করে একই কমান্ড। ssh-keygen ও ssh-copy-id এখন বিল্ট-ইন থাকে।

সহজ মনে রাখার ট্রিক:
ssh-copy-id = “আমার ID/চাবি কপি করে সার্ভারে দাও”। তাই চাবি যার কাছে আছে, কমান্ড সে দেবে। চাবি আপনার ল্যাপটপে আছে, তাই ল্যাপটপ থেকে কমান্ড দেবেন।

Step 3: টেস্ট করুন: পাসওয়ার্ড ছাড়া লগইন

Bash

ssh tolearn@10.0.0.1

ব্যস, পাসওয়ার্ড ছাড়াই লগইন হয়ে যাবে!

Step 4: সার্ভার হার্ডেনিং – /etc/ssh/sshd_config

সতর্কতা: এই ফাইল এডিট করার আগে অবশ্যই আরেকটি SSH সেশন খোলা রাখুন। ভুল হলে লকআউট হয়ে যাবেন।

Bash

sudo nano /etc/ssh/sshd_config

এই ৫টি লাইন মাস্ট চেঞ্জ করুন:

Port 2222 # 1. ডিফল্ট 22 পোর্ট চেঞ্জ করুন
PermitRootLogin no # 2. root দিয়ে ডিরেক্ট লগইন বন্ধ
PasswordAuthentication no # 3. পাসওয়ার্ড লগইন সম্পূর্ণ বন্ধ
PubkeyAuthentication yes # 4. শুধু Key দিয়ে লগইন Allow
AllowUsers tolearn developer # 5. শুধু এই ইউজাররা লগইন করতে পারবে

সেভ করে SSH রিস্টার্ট দিন:

Bash

sudo systemctl restart sshd

নতুন পোর্ট দিয়ে লগইন:

Bash

ssh -p 2222 tolearn@10.0.0.1

Step 5: Fail2Ban দিয়ে Brute-Force অ্যাটাক বন্ধ করা

কেউ বারবার ভুল পাসওয়ার্ড দিলে তার IP অটো ব্যান হয়ে যাবে।

১. ইনস্টল:

Bash

sudo apt update && sudo apt install fail2ban -y

২. কনফিগারেশন কপি করুন:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

৩. [sshd] সেকশন এডিট করুন:

[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 1h
findtime = 10m

ব্যাখ্যা: 10 মিনিটে 3 বার ভুল করলে 1 ঘন্টার জন্য ব্যান।

৪. রিস্টার্ট ও স্ট্যাটাস চেক:

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

Step 6: বোনাস হার্ডেনিং টিপস

  1. UFW Firewall: শুধু দরকারি পোর্ট খুলুন।

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp
sudo ufw enable

  1. Automatic Updates: সিকিউরিটি প্যাচ অটো ইনস্টল।

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure unattended-upgrades


3. সিরিজের পরবর্তী পর্ব

Part-4: লিনাক্স ওয়েব সার্ভার সেটআপ – Nginx/Apache, PHP, MySQL – tolearn ইউজার দিয়ে একটি সম্পূর্ণ ওয়েবসাইট হোস্ট করা শিখব।

ssh-copy-id tolearn@10.0.0.1 কাজ না করার ৭টা কমন কারণ + সমাধান দিচ্ছি। ৯০% কেস এগুলোর মধ্যেই পড়ে।

Troubleshooting: ssh-copy-id কাজ না করলে কী করবেন

1. প্রথমে বেসিক চেক: ping ও ssh চলে কিনা

আপনার ল্যাপটপ থেকে:

Bash

ping 10.0.0.1
ssh tolearn@10.0.0.1

যদি ssh পাসওয়ার্ড দিয়ে লগইন না হয়, তাহলে ssh-copy-id ও হবে না। আগে ssh ঠিক করুন।

Error: Connection refused → সার্ভারে SSH ইনস্টল নেই।
সমাধান – সার্ভারে লগইন করে:

Bash

sudo apt update && sudo apt install openssh-server -y
sudo systemctl enable ssh --now
sudo systemctl status ssh

2. Error: Permission denied (publickey,password)

কারণ: সার্ভারের /etc/ssh/sshd_config এ PasswordAuthentication no করা আছে।
সমাধান: সাময়িকভাবে পাসওয়ার্ড লগইন চালু করুন।

সার্ভারে:

Bash

sudo nano /etc/ssh/sshd_config

এই লাইন খুঁজে চেঞ্জ করুন:

Bash

PasswordAuthentication yes

সেভ করে রিস্টার্ট:

Bash

sudo systemctl restart sshd

এখন ল্যাপটপ থেকে আবার ssh-copy-id দিন। হয়ে গেলে PasswordAuthentication no করে দিন।

3. Error: ssh: connect to host 10.0.0.1 port 22: Connection timed out

কারণ ১: IP ভুল অথবা সার্ভার বন্ধ
ip a দিয়ে সার্ভারের IP চেক করুন।

কারণ ২: Firewall ব্লক করছে
সার্ভারে:

Bash

sudo ufw allow 22/tcp
sudo ufw reload

কারণ ৩: পোর্ট 22 না, অন্য পোর্ট
আপনি যদি Part-3 অনুযায়ী পোর্ট 2222 করে থাকেন:

Bash

ssh-copy-id -p 2222 tolearn@10.0.0.1

4. Error: /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: .../.ssh/id_ed25519.pub does not exist

কারণ: আপনার ল্যাপটপে key বানানোই হয়নি।
সমাধান – ল্যাপটপে:

Bash

ssh-keygen -t ed25519 -C "my-laptop"

এন্টার চাপতে থাকুন। তারপর আবার ssh-copy-id দিন।

5. Error: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

কারণ: আপনি সার্ভার রি-ইনস্টল করেছেন, তাই fingerprint মিলছে না।
সমাধান – ল্যাপটপে:

Bash

ssh-keygen -R 10.0.0.1

এটা পুরনো key মুছে দেবে। তারপর আবার ট্রাই করুন।

6. Windows এ ssh-copy-id command not found

সমাধান ১: PowerShell এ ম্যানুয়ালি করুন

powershell

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh tolearn@10.0.0.1 "cat >> .ssh/authorized_keys"

সমাধান ২: Git Bash ব্যবহার করুন – Git Bash এ ssh-copy-id কাজ করে।

7. ১০০% কাজ করবে এমন ম্যানুয়াল পদ্ধতি

যদি ssh-copy-id কোনোভাবেই কাজ না করে:

Step-1: ল্যাপটপে public key দেখুন

Bash

cat ~/.ssh/id_ed25519.pub

পুরো আউটপুট কপি করুন। ssh-ed25519 AAAAC3... my-laptop এর মতো হবে।

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

Bash

ssh tolearn@10.0.0.1

Step-3: সার্ভারে key পেস্ট করুন

Bash

mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys

কপি করা key টা পেস্ট করে Ctrl+O, Enter, Ctrl+X দিয়ে সেভ করুন।

Step-4: পারমিশন ঠিক করুন – এটা মাস্ট

Bash

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Step-5: ল্যাপটপ থেকে টেস্ট

Bash

exit  # সার্ভার থেকে বের হনssh tolearn@10.0.0.1

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


Quick Debug Checklist:

  1. ping 10.0.0.1 চলে?
  2. ssh tolearn@10.0.0.1 পাসওয়ার্ড দিয়ে ঢোকে?
  3. সার্ভারে sudo systemctl status ssh active?
  4. ls ~/.ssh/id_ed25519.pub ফাইল আছে?
  5. পোর্ট 22 নাকি অন্য কিছু? sudo ss -tulpn | grep sshd

ed25519 vs rsa – কোনটা ব্যবহার করবেন?

Key Typeকমান্ডসাইজসিকিউরিটিস্পিডরেকমেন্ডেশন
ed25519ssh-keygen -t ed25519256 bitসবচেয়ে বেশিসবচেয়ে ফাস্ট2026 এটাই বেস্ট
rsassh-keygen -t rsa -b 40964096 bitঅনেক বেশিস্লোপুরনো সার্ভারের জন্য
ecdsassh-keygen -t ecdsa256 bitভালোফাস্টএখন আর ইউজ হয় না
dsassh-keygen -t dsa1024 bitদুর্বলস্লোব্যবহার নিষেধ

1. ed25519 কেন বেস্ট?

  1. ছোট সাইজ: Key মাত্র 68 ক্যারেক্টার, RSA 4096-bit হয় 800+ ক্যারেক্টার
  2. ফাস্ট: লগইন, সাইন করতে সময় কম লাগে
  3. সিকিউর: 256-bit ed25519 = 3072-bit RSA এর সমান সিকিউরিটি
  4. Modern: OpenSSH 6.5+ এ ডিফল্ট। এখন সব সার্ভার সাপোর্ট করে

2. কখন rsa ব্যবহার করবেন?

যদি আপনার সার্ভার খুব পুরনো হয় – যেমন Ubuntu 14.04, CentOS 6। সেগুলো ed25519 সাপোর্ট করে না।

RSA Key বানানোর কমান্ড:

Bash

ssh-keygen -t rsa -b 4096 -C "my-laptop"

-b 4096 মাস্ট দেবেন। 2048 এখন দুর্বল।

3. ssh-copy-id সব টাইপেই কাজ করে

আপনি যে টাইপের key ই বানান, কমান্ড একই:

Bash

ssh-copy-id tolearn@10.0.0.1

এটা অটো ~/.ssh/id_ed25519.pub অথবা ~/.ssh/id_rsa.pub যেটা পাবে সেটা কপি করবে।

স্পেসিফিক ফাইল দিতে চাইলে:

Bash

ssh-copy-id -i ~/.ssh/id_rsa.pub tolearn@10.0.0.1

4. চেক করুন সার্ভার কোনটা সাপোর্ট করে

সার্ভারে লগইন করে:

Bash

ssh -Q key

আউটপুটে ssh-ed25519 থাকলে → ed25519 সাপোর্টেড।

সারসংক্ষেপ: আপনি কোনটা ইউজ করবেন?

আপনার সার্ভার যদি 2020 এর পরের হয় → ed25519 ইউজ করুন:

Bash

ssh-keygen -t ed25519 -C "tolearn-laptop"

যদি “Key type not supported” Error দেয় → rsa ইউজ করুন:

Bash

ssh-keygen -t rsa -b 4096 -C "tolearn-laptop"

ed25519 ফিক্সড না, কিন্তু 2026 এ এটাই ইন্ডাস্ট্রি স্ট্যান্ডার্ড। dsa বাদে বাকি সব চলবে।


cat is not recognized Error মানে আপনি Windows এর Command Prompt বা PowerShell এ আছেন। লিনাক্সের কমান্ড Windows এ সরাসরি চলে না।

সমাধান: আপনি কোন OS এ আছেন তার উপর নির্ভর করে

Case 1: আপনার ল্যাপটপ Windows, সার্ভার Linux

এটাই সবচেয়ে কমন কেস। ssh-keygen আর ssh-copy-id আপনার Windows ল্যাপটপে রান করবেন।

Windows এ cat এর বদলে type ব্যবহার করুন:

১. Public Key দেখতে:

powershell

type %USERPROFILE%\.ssh\id_ed25519.pub

ব্যাখ্যা: %USERPROFILE% = C:\Users\YourName। এটা cat ~/.ssh/id_ed25519.pub এর Windows ভার্সন।

২. ssh-copy-id Windows এ নেই। তাই ম্যানুয়ালি করুন:

Step-A: Key কপি করুন

powershell

type %USERPROFILE%\.ssh\id_ed25519.pub

পুরো ssh-ed25519 AAAAC3... user@DESKTOP লাইনটা কপি করুন।

Step-B: সার্ভারে লগইন করুন

powershell

ssh tolearn@10.0.0.1

Step-C: সার্ভারের ভিতর পেস্ট করুন

Bash

mkdir -p ~/.sshecho "ssh-ed25519 AAAAC3... user@DESKTOP" >> ~/.ssh/authorized_keyschmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keysexit

echo "..." এর ভিতর আপনার কপি করা key পেস্ট করবেন।

Step-D: টেস্ট করুন – Windows থেকে

powershell

ssh tolearn@10.0.0.1

এখন পাসওয়ার্ড ছাড়া ঢুকবে।

Case 2: Windows এ লিনাক্স কমান্ড চালাতে চান

Option 1: Git Bash ব্যবহার করুন
Git ইনস্টল করলে Git Bash পাবেন। ওটা খুললে cat, ls, ssh-keygen, ssh-copy-id সব চলবে। লিনাক্সের মতোই।

Option 2: PowerShell এ OpenSSH
Windows 10/11 এ বিল্ট-ইন আছে। PowerShell ওপেন করে ssh-keygen দিন। cat এর বদলে Get-Content বা type ইউজ করুন।

Option 3: WSL ব্যবহার করুন
wsl --install দিয়ে Ubuntu ইনস্টল করলে পুরো লিনাক্স টার্মিনাল পাবেন।

কুইক চিটশিট: Windows vs Linux কমান্ড

কাজLinux/MacWindows CMDWindows PowerShell
ফাইল দেখাcat file.txttype file.txtGet-Content file.txt বা type file.txt
ফোল্ডার লিস্টls -ladirls বা dir
হোম ডিরেক্টরি~ বা \$HOME%USERPROFILE%\$HOME বা \$env:USERPROFILE

সারসংক্ষেপ: cat Error মানে আপনি Windows এ। type %USERPROFILE%\.ssh\id_ed25519.pub দিয়ে key দেখুন, তারপর ম্যানুয়ালি সার্ভারে পেস্ট করুন।

The post লিনাক্স সার্ভার কনফিগারেশন পার্ট-৩: SSH Key-Based Authentication ও সার্ভার হার্ডেনিং appeared first on To Learn Team.

]]>
লিনাক্স সার্ভার কনফিগারেশন পার্ট-২: ফাইল পারমিশন ও ACL মাস্টারক্লাস https://tolearnteam.com/linux-file-permission-acl-bangla-tutorial/ Tue, 04 Aug 2026 16:02:15 +0000 http://tolearnteam.com/?p=2031 Part-1 এ আমরা tolearn ইউজার বানিয়েছি। কিন্তু সে কোন ফাইল পড়তে পারবে, কোনটা এডিট করতে পারবে? সেটা ঠিক করে দেয় ফাইল পারমিশন। ভুল পারমিশন = হ্যাক হওয়ার রাস্তা খুলে দেওয়া। প্রয়োজনীয় প্যাকেজ: coreutils এবং acl – sudo…

The post লিনাক্স সার্ভার কনফিগারেশন পার্ট-২: ফাইল পারমিশন ও ACL মাস্টারক্লাস appeared first on To Learn Team.

]]>
Part-1 এ আমরা tolearn ইউজার বানিয়েছি। কিন্তু সে কোন ফাইল পড়তে পারবে, কোনটা এডিট করতে পারবে? সেটা ঠিক করে দেয় ফাইল পারমিশন। ভুল পারমিশন = হ্যাক হওয়ার রাস্তা খুলে দেওয়া।

প্রয়োজনীয় প্যাকেজ: coreutils এবং acl – sudo apt install acl দিয়ে ACL ইনস্টল করুন।

Step 1: বেসিক পারমিশন বোঝা – ls -l

যেকোনো ফাইলের পারমিশন দেখুন:

Bash

ls -l /var/www/project/index.php

আউটপুট: -rwxr-xr-- 1 tolearn www-data 2048 Aug 4 22:00 index.php

ব্যাখ্যা:

অংশমানে
-ফাইল, d হলে ডিরেক্টরি
rwxOwner tolearn এর পারমিশন: Read, Write, Execute
r-xGroup www-data এর পারমিশন: Read, Execute
r--Others এর পারমিশন: শুধু Read

Numeric Value: r=4, w=2, x=1। তাই rwx = 7, r-x = 5, r-- = 4। rwxr-xr-- মানে 754।

Step 2: পারমিশন পরিবর্তন – chmod

সবচেয়ে কমন পারমিশন:

Bash

chmod u+x script.sh  # User/Owner কে Execute পারমিশন দিন
chmod g-w file.txt   # Group থেকে Write পারমিশন কেড়ে নিন
chmod o=r file.txt   # Others কে শুধু Read পারমিশন দিন

Symbolic Way:

chmod u+x script.sh # User/Owner কে Execute পারমিশন দিন
chmod g-w file.txt # Group থেকে Write পারমিশন কেড়ে নিন
chmod o=r file.txt # Others কে শুধু Read পারমিশন দিন

Step 3: মালিকানা পরিবর্তন – chown ও chgrp

ফাইলের মালিক ও গ্রুপ চেঞ্জ:

Bash

sudo chown tolearn:www-data /var/www/project/index.php

ব্যাখ্যা: tolearn হলো নতুন Owner, www-data হলো নতুন Group।

শুধু গ্রুপ চেঞ্জ:

Bash

sudo chgrp developers /var/www/project/

Step 4: স্পেশাল পারমিশন – setuid, setgid, sticky bit

এগুলো অ্যাডভান্সড সিকিউরিটির জন্য।

১. setuid 4xxx: ফাইলটি যে Owner-এর, তার পারমিশন নিয়ে রান হবে। passwd কমান্ড এভাবে কাজ করে।

Bash

sudo chmod 4755 /usr/bin/program

২. setgid 2xxx: ফোল্ডারে নতুন ফাইল তৈরি হলে Parent ফোল্ডারের গ্রুপ পাবে। শেয়ার্ড ফোল্ডারের জন্য দরকারি।

Bash

sudo chmod 2775 /var/www/shared_project/

৩. sticky bit 1xxx: /tmp ফোল্ডারে থাকে। ইউজার শুধু নিজের ফাইল ডিলিট করতে পারবে।

Bash

sudo chmod 1777 /tmp

Step 5: ACL – Access Control List: আসল ক্ষমতা

chmod দিয়ে শুধু 3 ধরনের ইউজার কন্ট্রোল করা যায়। কিন্তু যদি tolearn ইউজারকে রিড আর developer ইউজারকে রাইট দিতে চান? তখন লাগবে ACL।

১. ACL চেক করা:

Bash

getfacl /var/www/project/index.php

২. নির্দিষ্ট ইউজারকে পারমিশন দেওয়া:

Bash

sudo setfacl -m u:developer:rw /var/www/project/index.php

ব্যাখ্যা: developer ইউজারকে Read+Write দিলাম, অথচ ফাইলের Owner tolearn ই আছে।

৩. নির্দিষ্ট গ্রুপকে পারমিশন দেওয়া:

Bash

sudo setfacl -m g:testers:r /var/www/project/

৪. ACL মুছে ফেলা:

Bash

sudo setfacl -b /var/www/project/index.php

Step 6: ডিরেক্টরি স্ট্রাকচার ও বেস্ট প্র্যাকটিস

ওয়েব সার্ভারের জন্য রেকমেন্ডেড পারমিশন:

/var/www/ root:root 755
└── project/ tolearn:www-data 755
├── index.php tolearn:www-data 644
├── uploads/ www-data:www-data 775 + setgid
└── config.php tolearn:www-data 640 # Others পড়তে পারবে না

গোল্ডেন রুল:

  1. ফোল্ডার: 755, ফাইল: 644
  2. কনফিগ ফাইল: 640 বা 600
  3. কখনোই 777 পারমিশন দেবেন না।

3. সিরিজের পরবর্তী পর্ব

Part-3: SSH Key-Based Authentication ও সার্ভার হার্ডেনিং – পাসওয়ার্ড ছাড়া সিকিউর লগইন এবং root লগইন বন্ধ করা শিখব।

The post লিনাক্স সার্ভার কনফিগারেশন পার্ট-২: ফাইল পারমিশন ও ACL মাস্টারক্লাস 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.

]]>
লিনাক্স নেটওয়ার্কিং মাস্টারক্লাস: ফাইনাল এক্সাম কুইজ (পার্ট ১ – ৬) https://tolearnteam.com/%e0%a6%b2%e0%a6%bf%e0%a6%a8%e0%a6%be%e0%a6%95%e0%a7%8d%e0%a6%b8-%e0%a6%a8%e0%a7%87%e0%a6%9f%e0%a6%93%e0%a6%af%e0%a6%bc%e0%a6%be%e0%a6%b0%e0%a7%8d%e0%a6%95%e0%a6%bf%e0%a6%82-%e0%a6%ae%e0%a6%be%e0%a6%b8/ Tue, 28 Jul 2026 08:43:41 +0000 http://tolearnteam.com/?p=1796 মোট নম্বর: ৩০ সময়: ৩০ মিনিট প্রশ্ন টাইপ: বহুনির্বাচনী প্রশ্ন (MCQ) 📝 প্রশ্নপত্র (Questions) পার্ট ১ ও ২: মৌলিক নেটওয়ার্কিং ও IP Inspection পার্ট ৩: রাউটিং টেবিল, গেটওয়ে ও Subnetting…

The post লিনাক্স নেটওয়ার্কিং মাস্টারক্লাস: ফাইনাল এক্সাম কুইজ (পার্ট ১ – ৬) appeared first on To Learn Team.

]]>
মোট নম্বর: ৩০

সময়: ৩০ মিনিট

প্রশ্ন টাইপ: বহুনির্বাচনী প্রশ্ন (MCQ)

📝 প্রশ্নপত্র (Questions)

পার্ট ১ ও ২: মৌলিক নেটওয়ার্কিং ও IP Inspection

  1. লিনাক্স সিস্টেমে সব নেটওয়ার্ক ইন্টারফেস ও আইপি এড্রেস দেখতে কোনটি সবচেয়ে আধুনিক কমান্ড?
    • (A) ifconfig
    • (B) ip addr show
    • (C) netstat -a
    • (D) route -n
  2. কেবল IPv4 এড্রেস ফিল্টার করে দেখতে ip কমান্ডের সাথে কোন অপশনটি ব্যবহার করা হয়?
    • (A) ip -4 a
    • (B) ip --ipv4
    • (C) ip show v4
    • (D) ip -v4 addr
  3. সিস্টেমে অ্যাসাইন করা সব আইপি এড্রেস সংক্ষেপে এক লাইনে দেখতে কোনটি ব্যবহার করা হয়?
    • (A) hostname -i
    • (B) hostname -I
    • (C) uname -a
    • (D) whoami
  4. ping 8.8.8.8 কমান্ডের সময় ঠিক ৪টি আইসিএমপি (ICMP) প্যাকেট পাঠাতে কোন ফ্ল্যাগটি ব্যবহার করা হয়?
    • (A) -t 4
    • (B) -n 4
    • (C) -c 4
    • (D) -s 4
  5. ping কমান্ড চালু থাকা অবস্থায় থামানোর জন্য টার্মিনালে কোন কি-কম্বিনেশন চাপতে হয়?
    • (A) Ctrl + Z
    • (B) Ctrl + C
    • (C) Ctrl + X
    • (D) Ctrl + D

পার্ট ৩: রাউটিং টেবিল, গেটওয়ে ও Subnetting

  1. লিনাক্স সিস্টেমের বর্তমান Routing Table এবং Default Gateway দেখতে কোনটি ব্যবহার করা হয়?
    • (A) ip route show
    • (B) ip gateway
    • (C) show route
    • (D) netstat -r
  2. ম্যানুয়ালি 10.0.0.254 কে Default Gateway হিসেবে যুক্ত করার সঠিক কমান্ড কোনটি?
    • (A) sudo ip gateway add 10.0.0.254
    • (B) sudo ip route add default via 10.0.0.254
    • (C) sudo route add 10.0.0.254
    • (D) sudo ip route set gw 10.0.0.254
  3. CIDR নোটিশে /24 সাবনেট মাস্কের সাবনেট মাস্ক ভ্যালু কোনটি?
    • (A) 255.255.0.0
    • (B) 255.255.255.0
    • (C) 255.0.0.0
    • (D) 255.255.255.255
  4. রাউটিং টেবিল থেকে নির্দিষ্ট একটি সাবনেট রুট মুছে ফেলতে কোন কমান্ডটি সঠিক?
    • (A) sudo ip route del 10.0.0.0/24
    • (B) sudo ip route remove 10.0.0.0/24
    • (C) sudo ip route drop 10.0.0.0/24
    • (D) sudo route clear 10.0.0.0/24
  5. /24 সাবনেটে মোট কতটি ব্যবহারযোগ্য Host IP পাওয়া যায়?
    • (A) ২৫৬ টি
    • (B) ২৫৫ টি
    • (C) ২৫৪ টি
    • (D) ১২৮ টি

পার্ট ৪: Static IP & NetworkManager (nmcli)

  1. আধুনিক লিনাক্সে NetworkManager-এর কমান্ড লাইন টুল কোনটি?
    • (A) netctl
    • (B) nmcli
    • (C) networkctl
    • (D) ifconfig
  2. সব নেটওয়ার্ক কার্ড বা ডিভাইসের স্ট্যাটাস দেখতে কোনটি ব্যবহার করা হয়?
    • (A) nmcli device status
    • (B) nmcli show all
    • (C) nmcli card status
    • (D) nmcli interface list
  3. nmcli দিয়ে স্থায়ী IP সেট করার জন্য IP Assignment মেথড DHCP থেকে কিসে রূপান্তর করতে হয়?
    • (A) static
    • (B) manual
    • (C) fixed
    • (D) custom
  4. eth0 ইন্টারফেসে 10.0.0.1/24 স্ট্যাটিক আইপি সেট করার সঠিক কমান্ড কোনটি?
    • (A) sudo nmcli con mod "eth0" ipv4.addresses 10.0.0.1/24
    • (B) sudo nmcli set "eth0" ip 10.0.0.1/24
    • (C) sudo nmcli edit "eth0" address 10.0.0.1/24
    • (D) sudo nmcli dev ip 10.0.0.1/24
  5. ip addr add কমান্ড দিয়ে আইপি যোগ করলে পিসি রিবুট দেওয়ার পর কী ঘটে?
    • (A) আইপি স্থায়ী থেকে যায়
    • (B) আইপি মুছে যায় (Temporary IP)
    • (C) নেটওয়ার্ক কার্ড নষ্ট হয়ে যায়
    • (D) সিস্টেম রিবুট হয় না

পার্ট ৫: নেটওয়ার্ক ট্রাবলশুটিং, Traceroute ও Open Ports (ss)

  1. কোনো থার্ড-পার্টি টুল ইনস্টল না করেই প্যাকেটের ভ্রমণ পথ (Hops) ট্র্যাক করতে কোনটি ব্যবহার করা যায়?
    • (A) traceroute
    • (B) tracepath
    • (C) mpath
    • (D) pathping
  2. লিনাক্সে ডোমেইনের DNS A-Record ও রেজোলিউশন টেস্ট করার প্রধান টুল কোনটি?
    • (A) dig
    • (B) ping
    • (C) curl
    • (D) ss
  3. কাস্টম DNS Server (যেমন Cloudflare 1.1.1.1) দিয়ে dig কুয়েরি করার সঠিক সিনট্যাক্স কোনটি?
    • (A) dig google.com -dns 1.1.1.1
    • (B) dig @1.1.1.1 google.com
    • (C) dig google.com via 1.1.1.1
    • (D) dig --server 1.1.1.1 google.com
  4. netstat-এর আধুনিক ও দ্রুতগতির বিকল্প কোনটি?
    • (A) lsof
    • (B) ss
    • (C) sockstat
    • (D) nmap
  5. ss -tulnp কমান্ডে -l ফ্ল্যাগ দিয়ে কী বোঝায়?
    • (A) Local connections
    • (B) Listening ports
    • (C) Logged users
    • (D) Low latency
  6. ss কমান্ডে প্রসেসের নাম ও প্রসেস আইডি (PID) দেখার জন্য কোন ফ্ল্যাগ ব্যবহার করা হয়?
    • (A) -p
    • (B) -P
    • (C) -i
    • (D) -a
  7. নির্দিষ্ট পোর্ট (যেমন SSH Port 22) ফিল্টার করতে ss আউটপুটের সাথে কোনটি জুড়ে দেওয়া হয়?
    • (A) grep :22
    • (B) find :22
    • (C) select :22
    • (D) filter :22

পার্ট ৬: SSH Remote Access, Key Auth & SCP/Rsync

  1. SSH সার্ভিসের ডিফল্ট পোর্ট নম্বর কত?
    • (A) ৮০
    • (B) ৪৪৩
    • (C) ২২
    • (D) ২১
  2. কাস্টম পোর্ট 2222-এ SSH সংযোগ দেওয়ার জন্য সঠিক কমান্ড কোনটি?
    • (A) ssh -port 2222 user@IP
    • (B) ssh -p 2222 user@IP
    • (C) ssh :2222 user@IP
    • (D) ssh -P 2222 user@IP
  3. আধুনিক ও সবচেয়ে নিরাপদ ED25519 SSH Key Pair জেনারেট করার কমান্ড কোনটি?
    • (A) ssh-keygen -t ed25519 -C "email"
    • (B) ssh-keygen --type rsa256
    • (C) make-ssh-key -t ed25519
    • (D) ssh-key generate ed25519
  4. লোকাল পিসির Public Key রিমোট সার্ভারে পাসওয়ার্ডহীন লগইনের জন্য পাঠাতে কোনটি ব্যবহৃত হয়?
    • (A) ssh-send-key
    • (B) ssh-copy-id
    • (C) scp-key
    • (D) ssh-add-key
  5. SSH Key Pair তৈরি করলে নিজের পিসিতে কোন ফাইলটি কখনো কারোর সাথে শেয়ার করা যাবে না?
    • (A) id_ed25519.pub
    • (B) id_ed25519 (Private Key)
    • (C) known_hosts
    • (D) authorized_keys
  6. SCP দিয়ে একটি পুরো ফোল্ডার রিমোট সার্ভারে কপি করার জন্য কোন ফ্ল্যাগ প্রয়োজন?
    • (A) -f
    • (B) -r
    • (C) -a
    • (D) -d
  7. Rsync কমান্ডে ফাইল পারমিশন, ওনারশিপ ও টাইমস্ট্যাম্প ধরে রাখতে কোন ফ্ল্যাগ ব্যবহৃত হয়?
    • (A) -a (Archive)
    • (B) -z (Compress)
    • (C) -v (Verbose)
    • (D) -P (Progress)
  8. SSH Hardening-এর জন্য /etc/ssh/sshd_config ফাইলে পাসওয়ার্ড লগইন বন্ধ করতে কী লিখতে হয়?
    • (A) PasswordAuth off
    • (B) PasswordAuthentication no
    • (C) DisablePassword yes
    • (D) PermitPassword false

🔑 উত্তরপত্র (Answer Key)

প্রশ্নসঠিক উত্তরব্যাখ্যা / মূল বিষয়
১(B)ip addr show হলো আধুনিক iproute2 প্যাকেজের প্রধান কমান্ড।
২(A)ip -4 a ব্যবহার করলে কেবল IPv4 এড্রেস ফিল্টার হয়ে আসে।
৩(B)hostname -I সব নেটওয়ার্ক ইন্টারফেসের আইপিগুলোকে এক লাইনে প্রিন্ট করে।
৪(C)-c (count) ফ্ল্যাগ কতগুলো প্যাকেট পাঠানো হবে তা নির্দিষ্ট করে।
৫(B)Ctrl + C দিয়ে যেকোনো রানিং টার্মিনাল প্রসেস ইন্টারাপ্ট বা বন্ধ করা যায়।
৬(A)ip route show দিয়ে লিনাক্সের কারেন্ট রাউটিং টেবিল জানা যায়।
৭(B)sudo ip route add default via [Gateway_IP] দিয়ে ডিফল্ট রুট সেট করা হয়।
৮(B)/24 মানে প্রথম ২৪টি বিট অন (1), যার ডেসিমাল মান 255.255.255.0
৯(A)ip route del নির্দেশক দিয়ে সাবনেট বা রুট ডিলিট করা হয়।
১০(C)মোট ২৫৬টি এড্রেসের মধ্যে Network ID ও Broadcast ID বাদ দিয়ে ২৫৪টি Host IP থাকে।
১১(B)NetworkManager-এর প্রধান কমান্ড লাইন ইন্টারফেস হলো nmcli
১২(A)nmcli device status সব হার্ডওয়্যার ইন্টারফেসের স্থিতি নির্দেশ করে।
১৩(B)ipv4.method manual সেট করলে স্ট্যাটিক আইপি মোড অ্যাক্টিভ হয়।
১৪(A)nmcli con mod [con-name] ipv4.addresses [IP/Subnet] হলো সঠিক নিয়ম।
১৫(B)ip addr add দিয়ে করা পরিবর্তন মেমরিতে থাকে, রিবুটে মুছে যায়।
১৬(B)tracepath প্রায় সব ডিস্ট্রোতে বিল্ট-ইন থাকে, আলাদা ইন্সটল করতে হয় না।
১৭(A)dig (Domain Information Groper) হলো স্ট্যান্ডার্ড DNS টেস্টিং টুল।
১৮(B)@ সিম্বল দিয়ে কাস্টম নেমসার্ভার নির্দিষ্ট করা হয় (যেমন: @1.1.1.1)
১৯(B)ss (Socket Statistics) সকেটের আউটপুট দেখায় এবং এটি netstat থেকে দ্রুত।
২০(B)-l দিয়ে Listening Sockets/Ports ফিল্টার করা হয়।
২১(A)-p দিয়ে নির্দিষ্ট পোর্টে চলা Process Name ও PID প্রিন্ট হয়।
২২(A)grep :22 নির্দিষ্ট পোর্টের লাইন পাইপ করে আলাদা করে।
২৩(C)SSH প্রটোকলের ডিফল্ট নেটওয়ার্ক পোর্ট হলো ২২।
২৪(B)ssh কমান্ডের ছোট হাতের -p দিয়ে রিমোট পোর্ট নির্দিষ্ট করা হয়।
২৫(A)Elliptic Curve ক্রিপ্টোগ্রাফির ED25519 কি বর্তমানে অত্যন্ত দ্রুত ও নিরাপদ।
২৬(B)ssh-copy-id পাবলিক কি রিমোটের authorized_keys ফাইলে অটো-কপি করে।
২৭(B)Private Key সিক্রেট রাখতে হয়, এটি প্রকাশ পেলে সার্ভার এক্সেস কম্প্রোমাইজ হবে।
২৮(B)-r (Recursive) ফ্ল্যাগ ব্যবহার করে সম্পূর্ণ ডিরেক্টরি ট্রি কপি করা হয়।
২৯(A)-a (Archive) মোড ফাইল অ্যাট্রিবিউট, পারমিশন ও টাইমস্ট্যাম্প ধরে রাখে।
৩০(B)PasswordAuthentication no সেট করলে পাসওয়ার্ড ভিত্তিক অ্যাটাক বন্ধ হয়।

The post লিনাক্স নেটওয়ার্কিং মাস্টারক্লাস: ফাইনাল এক্সাম কুইজ (পার্ট ১ – ৬) appeared first on To Learn Team.

]]>
লিনাক্স নেটওয়ার্কিং মাস্টারক্লাস: সম্পূর্ণ চিটশিট (পার্ট ১ – ৬) https://tolearnteam.com/part-1-2-%e0%a6%ae%e0%a6%b2%e0%a6%95-%e0%a6%a8%e0%a6%9f%e0%a6%93%e0%a6%af%e0%a6%bc%e0%a6%b0%e0%a6%95-%e0%a6%95%e0%a6%ae%e0%a6%a8%e0%a6%a1-%e0%a6%93-ip-inspection/ Tue, 28 Jul 2026 08:32:39 +0000 http://tolearnteam.com/?p=1792 🔹 Part 1 & 2: মৌলিক নেটওয়ার্কিং কমান্ড ও IP Inspection কমান্ড (Command & Syntax) বিবরণ ও ফ্ল্যাগ (Description & Key Flags) ip addr show / ip a সব নেটওয়ার্ক…

The post লিনাক্স নেটওয়ার্কিং মাস্টারক্লাস: সম্পূর্ণ চিটশিট (পার্ট ১ – ৬) appeared first on To Learn Team.

]]>
🔹 Part 1 & 2: মৌলিক নেটওয়ার্কিং কমান্ড ও IP Inspection
কমান্ড (Command & Syntax)বিবরণ ও ফ্ল্যাগ (Description & Key Flags)
ip addr show / ip aসব নেটওয়ার্ক ইন্টারফেস এবং অ্যাসাইন করা আইপি দেখার জন্য।
ip addr show dev enp0s3নির্দিষ্ট নেটওয়ার্ক ইন্টারফেসের বিস্তারিত দেখা।
ip -4 a / ip -6 aকেবল IPv4 অথবা কেবল IPv6 এড্রেস ফিল্টার করা।
hostname / hostname -Iসিস্টেমের নাম এবং শর্ট আইপি লিস্ট দেখা।
ping [IP/Domain]নেটওয়ার্ক কানেক্টিভিটি টেস্ট করতে ICMP প্যাকেট পাঠানো।
ping -c 4 -i 0.5 8.8.8.8-c 4 (৪টি প্যাকেট), -i 0.5 (প্রতি ০.৫ সেকেণ্ডে ১টি প্যাকেট)।

🔹 Part 3: রাউটিং টেবিল, গেটওয়ে ও Subnetting Commands

কমান্ড (Command & Syntax)বিবরণ ও ফ্ল্যাগ (Description & Key Flags)
ip route show / ip rসিস্টেমের বর্তমান Routing Table ও Default Gateway দেখা।
sudo ip route add default via 10.0.0.254ম্যানুয়ালি Default Gateway যোগ করা।
sudo ip route add 10.0.0.0/24 via 10.0.0.254নির্দিষ্ট সাবনেটের জন্য কাস্টম রুট সেট করা।
sudo ip route del 10.0.0.0/24রাউটিং টেবিল থেকে নির্দিষ্ট রুট মুছে ফেলা।

🔹 Part 4: Static IP & NetworkManager (nmcli)

কমান্ড (Command & Syntax)বিবরণ ও ফ্ল্যাগ (Description & Key Flags)
nmcli device statusইন্টারফেস বা নেটওয়ার্ক কার্ডের বর্তমান অবস্থা দেখা।
nmcli connection showকনফিগার করা সব কানেকশন প্রোফাইলের তালিকা দেখা।
sudo nmcli con mod "eth0" ipv4.addresses 10.0.0.1/24স্থায়ী (Permanent) Static IP সেট করা।
sudo nmcli con mod "eth0" ipv4.method manualIP Assignment মেথড DHCP থেকে Manual-এ রূপান্তর করা।
sudo nmcli con mod "eth0" ipv4.gateway 10.0.0.254স্থায়ী Default Gateway অ্যাসাইন করা।
sudo nmcli con up "eth0"নেটওয়ার্ক ইন্টারফেসের নতুন কনফিগারেশন সচল করা।
sudo ip addr add 10.0.0.10/24 dev eth0ইনস্ট্যান্ট টেস্টিংয়ের জন্য Temporary IP যোগ করা (রিবুটে মুছে যাবে)।

🔹 Part 5: নেটওয়ার্ক ট্রাবলশুটিং, Traceroute ও Open Ports (ss)

কমান্ড (Command & Syntax)বিবরণ ও ফ্ল্যাগ (Description & Key Flags)
tracepath google.comসোর্স থেকে গন্তব্যের প্যাকেট ভ্রমণের রুট (Hops) ট্র্যাক করা।
traceroute 8.8.8.8প্রতিটি ইন্টারমিডিয়েট রাউটারের রেসপন্স টাইম সহ বিস্তারিত ট্রেস দেখা।
dig google.comDNS A-Record ও Name Resolution ডিটেইলস কুয়েরি করা।
dig @1.1.1.1 google.comকাস্টম DNS Server (যেমন Cloudflare 1.1.1.1) দিয়ে টেস্ট করা।
sudo ss -tulnpসব লিসেনিং পোর্টের তালিকা ও প্রসেস আইডি (PID) দেখা।
• -t: TCP, -u: UDP, -l: Listening, -n: Numeric, -p: Process
sudo ss -tulnp | grep :22নির্দিষ্ট পোর্ট (যেমন SSH Port 22) ফিল্টার করে চেক করা।

🔹 Part 6: SSH Remote Access, Key Auth & SCP/Rsync

কমান্ড (Command & Syntax)বিবরণ ও ফ্ল্যাগ (Description & Key Flags)
ssh user@10.0.0.2রিমোট লিনাক্স সার্ভারে SSH কানেকশন স্থাপন করা।
ssh -p 2222 user@10.0.0.2কাস্টম পোর্টে (যেমন Port 2222) SSH কানেক্ট করা।
ssh-keygen -t ed25519 -C "admin@domain.com"আধুনিক ও সুরক্ষিত ED25519 SSH Key Pair তৈরি করা।
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@10.0.0.2পাবলিক কি রিমোট সার্ভারে কপি করে Passwordless SSH সেট করা।
scp backup.zip user@10.0.0.2:/var/www/SCP দিয়ে লোকাল ফাইল রিমোট সার্ভারে কপি করা।
scp -r ./myfolder user@10.0.0.2:/home/user/-r (Recursive) দিয়ে পুরো ফোল্ডার কপি করা।
rsync -avzP ./project/ user@10.0.0.2:/backup/Rsync দিয়ে ফাইল সিঙ্ক করা।
• -a: Archive (Permissions/Timestamps), -v: Verbose, -z: Compress, -P: Progress/Resume

💡 প্রো-টিপস (Security Hardening):

প্রোডাকশন সার্ভারে নিরাপত্তার জন্য /etc/ssh/sshd_config ফাইলে PasswordAuthentication no এবং PermitRootLogin no সেট করে sudo systemctl restart ssh চালিয়ে দিন।

Download Full Instruction PDF

The post লিনাক্স নেটওয়ার্কিং মাস্টারক্লাস: সম্পূর্ণ চিটশিট (পার্ট ১ – ৬) appeared first on To Learn Team.

]]>
লিনাক্স SSH গাইড: Passwordless SSH Key সেটআপ, SCP ও Rsync দিয়ে ফাইল ট্রান্সফার (পার্ট-৬) https://tolearnteam.com/linux-ssh-bangla/ Tue, 28 Jul 2026 08:26:39 +0000 http://tolearnteam.com/?p=1789 ভূমিকা (Introduction) লিনাক্স নেটওয়ার্কিং কোর্সের গত পর্বে আমরা traceroute, dig এবং ss কমান্ড দিয়ে নেটওয়ার্ক ট্রাবলশুটিং শিখেছি। এই পর্বে আমরা অত্যন্ত গুরুত্বপূর্ণ একটি বিষয় কাভার করব: SSH (Secure Shell) দিয়ে…

The post লিনাক্স SSH গাইড: Passwordless SSH Key সেটআপ, SCP ও Rsync দিয়ে ফাইল ট্রান্সফার (পার্ট-৬) appeared first on To Learn Team.

]]>
ভূমিকা (Introduction)

লিনাক্স নেটওয়ার্কিং কোর্সের গত পর্বে আমরা traceroute, dig এবং ss কমান্ড দিয়ে নেটওয়ার্ক ট্রাবলশুটিং শিখেছি। এই পর্বে আমরা অত্যন্ত গুরুত্বপূর্ণ একটি বিষয় কাভার করব: SSH (Secure Shell) দিয়ে রিমোট লিনাক্স সার্ভার ম্যানেজমেন্ট এবং ফাইল ট্রান্সফার।

বিশ্বের প্রায় প্রতিটি লিনাক্স ক্লাউড বা ডাটা সেন্টার সার্ভার রিমোটলি এক্সেস করার জন্য SSH ব্যবহার করা হয়। সাধারণ পাসওয়ার্ড দিয়ে লগইন করা ব্রেটফোর্স অ্যাটাকের ঝুঁকিতে থাকে, তাই প্রফেশনাল এনভায়রনমেন্টে Passwordless SSH Key Authentication এবং ফাইল আদান-প্রদানের জন্য SCP ও Rsync ব্যবহার করা হয়।

১. SCP vs Rsync (ফাইল ট্রান্সফার টুলসের তুলনা)

বৈশিষ্ট্য (Feature)SCP (Secure Copy Protocol)Rsync (Remote Sync)
মূল কাজসহজ ও সরাসরি ফাইল/ডিরেক্টরি এক সার্ভার থেকে অন্য সার্ভারে কপি করা।ফাইল ও ফোল্ডার সিঙ্ক (Sync) করা এবং ব্যাকআপ রাখা।
পারফরম্যান্সসব ফাইল প্রতিবার নতুন করে পুরোটা কপি করে।কেবল পরিবর্তিত (Delta) অংশটুকু পাঠায়, যা অনেক দ্রুত।
কানেকশন ড্রপ সাপোর্টসংযোগ বিচ্ছিন্ন হলে পুনরায় শুরু থেকে কপি করতে হয়।-P বা --partial ব্যবহার করে অবশিষ্টাংশ থেকে রিজ্যুম করা যায়।
কম্প্রেশনসীমিত কম্প্রেশন সুবিধা।ট্রান্সফারের সময় ডাটা কমপ্রেস (-z) করে ব্যান্ডউইথ বাঁচায়।

২. ধাপে ধাপে প্র্যাকটিক্যাল গাইড

ক. বেসিক SSH কানেকশন (Password-based)

VM-Alpha থেকে VM-Beta (10.0.0.2) মেশিনে রিমোট লগইন করার সহজ কমান্ড:

Bash

ssh username@10.0.0.2

(যদি SSH সার্ভিস অন্য পোর্টে চলে, যেমন Port 2222: ssh -p 2222 username@10.0.0.2)

খ. SSH Key Pair তৈরি করা (ed25519 / rsa)

পাসওয়ার্ড ছাড়াই সুরক্ষিতভাবে লগইন করার জন্য আপনার পিসিতে SSH Key Pair (Public & Private Key) তৈরি করতে হবে:

Bash

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

(এটি ~/.ssh/ ডিরেক্টরিতে দুটি ফাইল তৈরি করবে: id_ed25519 যা আপনার Private Key এবং id_ed25519.pub যা Public Key।)

গ. পাবলিক কি রিমোট সার্ভারে কপি করা (ssh-copy-id)

তৈরি করা Public Key-টি রিমোট সার্ভার 10.0.0.2-এ পাঠাতে নিচের কমান্ডটি চালান:

Bash

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@10.0.0.2

এখন আপনি পাসওয়ার্ড ছাড়াই এক ক্লিকে ssh username@10.0.0.2 দিয়ে সরাসরি লগইন করতে পারবেন।

ঘ. SCP দিয়ে রিমোট ফাইল কপি করা

একটি নির্দিষ্ট ফাইল বা ডিরেক্টরি রিমোট সার্ভারে বা রিমোট সার্ভার থেকে লোকাল পিসিতে আনতে:

  • লোকাল ফাইল রিমোট সার্ভারে পাঠাতে:Bashscp backup.zip username@10.0.0.2:/var/www/html/
  • পুরো ডিরেক্টরি কপি করতে (-r):Bashscp -r ./myfolder username@10.0.0.2:/home/username/

ঙ. Rsync দিয়ে দ্রুত ফাইল ও ফোল্ডার সিঙ্ক করা

অফিসিয়াল ব্যাকআপ ও বড় ফাইল সিঙ্ক করার জন্য rsync সেরা মাধ্যম:

Bash

rsync -avzP ./project_files/ username@10.0.0.2:/var/backups/project/
  • ফ্ল্যাগগুলোর অর্থ:
    • -a (archive): ফাইল পারমিশন, টাইমস্ট্যাম্প ও ওনারশিপ বজায় রাখে।
    • -v (verbose): বিস্তারিত আউটপুট দেখায়।
    • -z (compress): ট্রান্সফারের সময় ডাটা কমপ্রেস করে ব্যান্ডউইথ কমায়।
    • -P (progress & partial): প্রোগ্রেস বার দেখায় এবং ড্রপ হওয়া ফাইল অবশিষ্টাংশ থেকে রিজ্যুম করে।

💡 সিকিউরিটি টিপস (SSH Hardening)

প্রোডাকশন সার্ভারে সিকিউরিটি বাড়াতে /etc/ssh/sshd_config ফাইলটি ওপেন করে নিচের সেটিংসগুলো পরিবর্তন করুন:

Ini, TOML

PasswordAuthentication no
PermitRootLogin no

পরিবর্তন শেষে sudo systemctl restart ssh চালিয়ে দিন। এতে কেউ রুট হিসেবে বা পাসওয়ার্ড দিয়ে সরাসরি পাসওয়ার্ড অ্যাটাক করতে পারবে না।

সারসংক্ষেপ ও চেকলিস্ট (Summary Checklist)

আপনি কি বিষয়গুলো সফলভাবে সম্পন্ন করেছেন? চেকপয়েন্টগুলো মিলিয়ে নিন:

  • [ ] ssh-keygen দিয়ে সফলভাবে কি-পেয়ার তৈরি করতে পেরেছেন।
  • [ ] ssh-copy-id দিয়ে পাসওয়ার্ডহীন SSH অথেটিকেশন কনফিগার করেছেন।
  • [ ] scp এবং rsync -avzP কমান্ড দিয়ে ফাইল সফলভাবে আদান-প্রদান করেছেন।

The post লিনাক্স SSH গাইড: Passwordless SSH Key সেটআপ, SCP ও Rsync দিয়ে ফাইল ট্রান্সফার (পার্ট-৬) appeared first on To Learn Team.

]]>