ভূমিকা: Telnet কি এবং কেন এখনো শিখবেন?
Telnet হলো একটি পুরানো নেটওয়ার্ক প্রোটোকল যা দিয়ে রিমোট সার্ভারে কমান্ড-লাইন অ্যাক্সেস নেওয়া যায়। পোর্ট 23 ব্যবহার করে।
সতর্কীকরণ: Telnet ইনসিকিউর!
Telnet এর সব ডাটা, ইউজারনেম, পাসওয়ার্ড প্লেইন টেক্সটে যায়। হ্যাকাররা নেটওয়ার্ক স্নিফ করে সহজেই চুরি করতে পারে। প্রোডাকশন সার্ভারে কখনো Telnet ব্যবহার করবেন না। SSH হলো মডার্ন ও সিকিউর বিকল্প।
তাহলে কেন শিখবেন?
- একাডেমিক পারপাস: পুরানো লিগ্যাসি সিস্টেম, নেটওয়ার্কিং ল্যাব, CCNA/CCNP কোর্সে এখনো Telnet লাগে।
- Troubleshooting: অনেক নেটওয়ার্ক ডিভাইস যেমন সুইচ, রাউটারে শুধু Telnet এনাবল থাকে।
- Conceptual Understanding:
xinetdসুপার সার্ভার কিভাবে কাজ করে সেটা শেখার জন্য Telnet বেস্ট উদাহরণ।
এই আর্টিকেলে যা শিখবেন:
- CentOS 9 এ Telnet Server ও Client ইনস্টল
xinetdদিয়ে Telnet সার্ভিস কনফিগার/etc/xinetd.d/telnetফাইলের স্ট্রাকচার- Firewalld দিয়ে পোর্ট 23 ওপেন করা
- Telnet ক্লায়েন্ট দিয়ে টেস্টিং
- একাডেমিক আলোচনা: Telnet vs SSH, xinetd এর কাজ
১. পূর্বশর্ত
| বিষয় | প্রয়োজন | ক্লারিফিকেশন |
|---|---|---|
| OS | CentOS Stream 9 / RHEL 9 / AlmaLinux 9 | CentOS 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
ক্লারিফিকেশন:
telnet-server: আসল ডেমন। এটা/usr/sbin/in.telnetdফাইল ইনস্টল করে।xinetd: Extended Internet Services Daemon। এটা পোর্ট 23 এ শুনে রাখে। কেউ কানেক্ট করলেin.telnetdচালু করে।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 = root | in.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]
উদাহরণ:
- ডিফল্ট পোর্ট 23 এ কানেক্ট:
Bash
telnet 10.0.0.5
- অন্য পোর্ট টেস্ট করা – পোর্ট খোলা আছে কিনা চেক:
Bash
telnet google.com 80
Connected to google.com দেখালে পোর্ট 80 ওপেন। এটা নেটওয়ার্ক ট্রাবলশুটিং এর জন্য Telnet এর সবচেয়ে বৈধ ব্যবহার।
3. বের হওয়া: Ctrl + ] চাপুন, তারপর quit লিখে Enter দিন।
৭. একাডেমিক আলোচনা: Telnet vs SSH এবং xinetd এর ভূমিকা
7.1. কেন Telnet বাদ দিয়ে SSH ব্যবহার করবেন?
| ফিচার | Telnet | SSH – Secure Shell |
|---|---|---|
| এনক্রিপশন | নাই। সব প্লেইন টেক্সট | AES, ChaCha20 দিয়ে এনক্রিপ্টেড |
| পোর্ট | 23 | 22 |
| 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. ডিরেক্টরি স্ট্রাকচার
/etc/xinetd.conf: মেইন কনফিগ ফাইল। গ্লোবাল সেটিংস থাকে।/etc/xinetd.d/: ডিরেক্টরি। প্রতিটা সার্ভিসের জন্য আলাদা ফাইল।telnet,tftp,rsyncইত্যাদি।/usr/sbin/in.telnetd: আসল Telnet ডেমন বাইনারি।/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 হলে সেশন ক্লোজ হবে।
সারসংক্ষেপ:
| সফটওয়্যার | কার্সর বের করার কী |
|---|---|
| VirtualBox | Right Ctrl |
| VMware | Ctrl + Alt |
| KVM/QEMU | Ctrl + 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 socket | CentOS 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 xinetd | systemctl 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 এর জন্য:
Start Menu→control panelলিখে সার্চ করুন →Control Panelওপেন করুনPrograms→Programs and Featuresএ ক্লিক করুন- বাম পাশে
Turn Windows features on or offএ ক্লিক করুন - লিস্ট থেকে
Telnet Clientখুঁজে বের করে টিক দিন ☑️ OKচাপুন → ইনস্টল হতে ১ মিনিট লাগবে- PC রিস্টার্ট লাগবে না
ইনস্টল শেষে টেস্ট করুন:
cmd
telnet 192.168.1.100
এখন কাজ করবে।
উপায় ২: PowerShell কমান্ড দিয়ে – ১ লাইনে
Admin PowerShell ওপেন করুন:
Start→PowerShellলিখুন →Run as Administratorএ ক্লিক করুন- এই কমান্ড রান করুন:
powershell
Enable-WindowsOptionalFeature -Online -FeatureName TelnetClient
Yচেপে রিস্টার্ট দিন যদি চায়
উপায় ৩: CMD দিয়ে – DISM কমান্ড
Admin CMD ওপেন করুন:
Start→cmdলিখুন →Run as administrator- এই কমান্ড রান করুন:
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 দিয়ে লগইন হবে না, এটা নরমাল।
গুরুত্বপূর্ণ সিকিউরিটি নোট
- Telnet ইনসিকিউর: পাসওয়ার্ড প্লেইন টেক্সটে যায়। শুধু ল্যাবে ব্যবহার করুন।
- Windows এ Telnet Server নাই: শুধু Client আছে। সার্ভার বানাতে লিনাক্স লাগবে।
- বিকল্প: PuTTY ডাউনলোড করুন। এটা Telnet + SSH দুটোই সাপোর্ট করে।
putty.orgথেকে ফ্রি।
কমন এরর
| এরর | কারণ | সমাধান |
|---|---|---|
Could not open connection to the host, on port 23 | CentOS ফায়ারওয়াল ব্লক করছেTelnet সার্ভিস চালু নাই | CentOS এ: sudo firewall-cmd --add-port=23/tcp --permanent && sudo firewall-cmd --reloadsudo systemctl restart xinetd |
Login incorrect | root দিয়ে লগইন করার চেষ্টা | নন-রুট ইউজার বানান: sudo adduser testuser |
