Блог компанії 3v-Hosting
Команда Telnet і її використання в Linux
9 хв.
Хоча в сучасних середовищах вона значною мірою замінена більш безпечними альтернативами, такими як SSH, команда telnet залишається універсальним і легким інструментом для перевірки базового мережевого зв'язку, усунення неполадок в службах на основі TCP і тестування простих взаємодій з віддаленими службами. В екосистемі Linux Telnet служить швидким способом відкриття TCP-з'єднань і спостереження за необробленими протокольними комунікаціями між клієнтом і сервером.
Незважаючи на свої історичні корені, telnet як і раніше корисний системним адміністраторам, розробникам і мережевим інженерам, яким необхідно розуміти, як мережеві служби поводяться на низькому рівні. У цій статті розглядаються основні концепції Telnet, його використання в середовищах Linux, типові випадки використання і важливі застереження, пов'язані з його використанням в сучасних системах.
Короткий огляд Telnet
Telnet, скорочення від «Teletype Network», є одним з найперших протоколів віддаленого доступу, розроблених для мереж TCP/IP. Його основна мета - забезпечити доступ до віддалених систем через командний рядок. Telnet за замовчуванням працює через TCP-порт 23 і дозволяє користувачам взаємодіяти з віддаленими машинами через інтерфейс віртуального терміналу.
Однак Telnet передає дані у вигляді звичайного тексту, включаючи облікові дані для аутентифікації, що робить його небезпечним для більшості сучасних додатків. З цієї причини Telnet був замінений для віддаленого входу в систему SSH, який шифрує всі комунікації. Проте, команда Telnet як і раніше доступна в багатьох дистрибутивах Linux в якості базового TCP-клієнта, пропонуючи діагностичні можливості для мережевих служб, які SSH не може легко відтворити.
Встановлення Telnet в Linux
Більшість сучасних дистрибутивів Linux за замовчуванням не включають telnet з міркувань безпеки. Однак його встановлення просте:
У системах на базі Debian/Ubuntu:
sudo apt update
sudo apt install telnet
У RHEL/CentOS/Fedora:
sudo dnf install telnet
Після встановлення бінарний файл telnet стає доступним у системному шляху, зазвичай як /usr/bin/telnet.
Основний синтаксис і використання Telnet
Загальний синтаксис telnet наступний:
telnet [хост] [порт]
Наприклад, щоб перевірити, чи відкритий порт 80 на веб-сервері:
telnet example.com 80
Якщо з'єднання встановлено успішно, термінал переключиться в інтерактивний режим, в якому користувач може вводити HTTP-запити вручну. Це надзвичайно корисно при перевірці, чи відповідає веб-сервер як очікується.
Ось приклад команди telnet, яка відправляє базовий HTTP-запит:
telnet example.com 80
GET / HTTP/1.1
Host: example.com
Зверніть увагу, що для завершення HTTP-запиту потрібно порожній рядок в кінці. Сервер повинен відповісти необробленими HTTP-заголовками і вмістом, надаючи інформацію про свою конфігурацію.
Цей приклад демонструє реальну потужність telnet - він не прив'язаний до конкретного протоколу додатка. Натомість він дозволяє здійснювати необроблену взаємодію TCP, що робить його ідеальним для тестування будь-яких служб на основі TCP, включаючи SMTP, POP3, FTP, Redis і навіть користувацькі служби.
Практичні приклади використання Telnet в Linux
1. Перевірка підключення до порту
Одним з найбільш поширених способів використання telnet є перевірка доступності певного порту на віддаленому хості. Це особливо корисно при налагодженні проблем з брандмауером або NAT.
Приклад:
telnet 192.168.1.100 22
Якщо ви бачите повідомлення «Connected» (Підключено), порт відкритий. Якщо ви отримуєте повідомлення «Connection refused» (Підключення відмовлено) або «Connection timed out» (Час очікування підключення закінчився), порт або закритий, або заблокований.
2. Тестування поштових серверів (SMTP)
Telnet часто використовується для імітації відправлення електронної пошти вручну через SMTP з метою усунення неполадок або в освітніх цілях.
telnet mail.example.com 25
Потім:
HELO test.local
MAIL FROM:<test@example.com>
RCPT TO:<admin@example.com>
DATA
Subject: Test mail
This is a test message.
.
QUIT
3. Налагодження FTP або інших протоколів
Аналогічним чином можна перевірити, чи правильно працює FTP-сервер або інший настроюваний TCP-сервіс.
telnet ftp.example.com 21
Відповідь зазвичай починається з наступного:
220 (vsFTPd 3.0.3)
4. Тестування Redis або Memcached
Оскільки ці бази даних в пам'яті часто прослуховують відкриті TCP-порти, telnet можна використовувати для тестування основних команд.
telnet localhost 6379
Потім введіть:
PING
Очікувана відповідь:
+PONG
Інші статті на тему Linux у нашому Блозі:
- Як використовувати команду find в Linux
- Помилка 405 і як її виправити
- Налаштування доступу до сервера за SSH ключем
- 10 корисних консольних утиліт для моніторингу Linux-сервера
Управління сеансом telnet і спеціальні команди
Під час активного сеансу telnet підтримує символи екранування і команди сеансу. За замовчуванням Ctrl+] переводить вас в режим команд telnet, де ви можете вводити різні команди telnet, такі як:
quit: вихід із сеансу
send ao: переривання виводу
status: перевірка поточного стану з'єднання
open host port: відкриття нового з'єднання
? або help: відображення доступних команд (відоме як telnet help)
Ці функції управління дозволяють керувати декількома сеансами або діагностувати поведінку без завершення процесу терміналу.
Наслідки використання Telnet для безпеки
Оскільки Telnet не шифрує трафік, його використання в ненадійних мережах становить значний ризик для безпеки. Будь-які передані дані, включаючи облікові дані для входу та вміст сеансу, можуть бути перехоплені зловмисниками за допомогою інструментів для перехоплення пакетів, таких як Wireshark.
Тому команда Telnet в Linux ніколи не повинна використовуватися для аутентифікації в віддалених системах, якщо тільки вона не знаходиться в захищеній, ізольованій мережі. У публічних або виробничих середовищах замість цього використовуйте SSH.
Навіть при використанні Telnet виключно для тестування переконайтеся, що цільовий сервіс не може бути зламаний або виведений з ладу за допомогою некоректних вхідних даних, особливо якщо він працює на застарілому програмному забезпеченні.
Telnet у скриптах та автоматизації
Хоча telnet в першу чергу є інтерактивним інструментом, його можна використовувати в простих скриптах за допомогою таких інструментів, як expect, які дозволяють автоматизувати взаємодії.
Приклад використання telnet з expect:
#!/usr/bin/expect
spawn telnet example.com 23
expect «login:»
send «myuser\r»
expect «Password:»
send «mypassword\r»
interact
Це корисно для застарілих систем, які як і раніше використовують Telnet для доступу. Але знову ж таки, слід бути обережним через небезпечний характер протоколу.
Порівняння Telnet в Linux і Windows
У Windows клієнт telnet за замовчуванням відключений в останніх версіях (таких як Windows 10/11), але його можна включити через:
Панель керування → Програми та компоненти → Увімкнення або вимкнення компонентів Windows → Клієнт Telnet
Після увімкнення ви можете запустити telnet з командного рядка cmd, використовуючи той самий синтаксис:
telnet example.com 80
Це називається методом cmd telnet і функціонує аналогічно Linux. Однак Windows пропонує меншу гнучкість у плані сценаріїв і обробки сеансів.
В обох системах користувачі можуть ввести telnet /?, щоб отримати вбудовану довідку по telnet, хоча в Windows вона більш обмежена.
Альтернативи Telnet
У сучасних безпечних середовищах telnet часто замінюють:
nc (netcat): аналогічний за призначенням, але більш гнучкий і зручний для написання скриптів.
curl або wget: для взаємодії з HTTP-сервісами.
ssh: для безпечного доступу до терміналу.
nmap: для детального сканування портів.
Проте, telnet залишається актуальним, коли метою є простота, необроблений доступ або швидка перевірка підключення.
Висновок
Незважаючи на свій вік і добре відомі вразливості в безпеці, команда Telnet залишається цінним інструментом для системних адміністраторів і мережевих інженерів. Вона відмінно підходить для швидкої і грубої діагностики, тестування необроблених протоколів і освітніх контекстів, які вимагають видимості потоків даних.
Незалежно від того, чи моделюєте ви SMTP-діалог, тестуєте доступність TCP-порту або спостерігаєте за поведінкою сервісу, Telnet надає неперевершений, простий підхід. Хоча він не підходить для використання у виробничому середовищі через ризики безпеки, розуміння його функціональності необхідне для професіоналів, які керують мережевими системами або усувають неполадки в них.