Gõ telnet trên Windows và nhận thông báo lỗi, hoặc cần biết một port mạng đang mở hay đóng trước khi báo cáo sự cố? Cả hai tình huống đều dẫn về cùng một giao thức gần 60 năm tuổi này, nhưng không còn theo cách nó từng được dùng. Telnet không mã hóa dữ liệu nên đã bị SSH thay thế trong quản trị hệ thống từ lâu, song nó chưa biến mất: người quản trị hệ thống vẫn dùng nó mỗi ngày, chỉ là cho một việc khác hẳn, kiểm tra nhanh xem một port TCP có mở hay không.
Phần dưới đây lần lượt giải thích telnet là gì và hoạt động ra sao, hướng dẫn cách bật và dùng nó trên Windows, so sánh với SSH để biết khi nào nên chuyển hẳn, rồi đi vào trọng tâm: cách đọc kết quả khi dùng telnet kiểm tra port.
Contents
Telnet là giao thức mạng dòng lệnh cho phép kết nối và điều khiển thiết bị từ xa qua cổng TCP 23. Giao thức ra đời năm 1969 trên ARPANET, nhưng ngày nay gần như không còn dùng để quản trị hệ thống. Vai trò thực tế của nó đã đổi: từ công cụ đăng nhập từ xa thành công cụ kiểm tra port mạng.
Tên gọi “telnet” ghép từ “teletype network”, phản ánh đúng mục đích ban đầu: cho một terminal (khi đó còn là máy đánh chữ điện) kết nối và điều khiển một máy tính ở xa như thể đang ngồi trước nó. Khi gõ lệnh telnet, bạn mở một phiên terminal ảo tới máy đích, gõ lệnh và nhận phản hồi qua kết nối TCP.
Điều ít người biết là: Telnet chạy thực tế từ 1969, nhưng phải đến 1983 mới có đặc tả chính thức, RFC 854 do Jon Postel và Joyce Reynolds soạn thảo, theo IETF Datatracker. Suốt 14 năm trước đó, các implementation khác nhau tự thỏa thuận cách hoạt động, không có chuẩn thống nhất.
Đây là lý do telnet vừa cũ vừa “chưa từng hoàn thiện” theo tiêu chuẩn bảo mật hiện đại: nó được thiết kế cho một mạng nghiên cứu khép kín, không phải Internet công cộng đầy rẫy kẻ nghe lén.
SSH ra đời năm 1995 và dần thay thế telnet trong mọi tác vụ quản trị nghiêm túc. Nhưng “bị thay thế” không đồng nghĩa “biến mất”. Telnet vẫn cài sẵn hoặc cài được trên hầu hết hệ điều hành, và nó vẫn làm tốt một việc mà các công cụ khác làm rườm rà hơn: mở một kết nối TCP thô tới bất kỳ port nào để xem port đó có phản hồi hay không.
Đó là lý do phần lớn người tìm “telnet là gì” hôm nay không cần dùng nó để đăng nhập vào đâu cả, họ cần nó để kiểm tra một port.

Port 23 là cổng TCP mặc định mà Telnet Server lắng nghe, theo quy ước được ấn định từ những ngày đầu chuẩn hóa giao thức. Khi bạn gõ telnet 192.168.1.1 mà không chỉ định port, client tự động thử kết nối tới port 23.
Nhưng đây là điểm khiến telnet vẫn còn giá trị: bạn có thể trỏ nó tới bất kỳ port TCP nào, không chỉ port 23. Cú pháp telnet <IP> <port> cho phép mở một kết nối TCP thô tới bất kỳ dịch vụ nào đang lắng nghe, từ port 80 (HTTP), 443 (HTTPS/TLS bắt tay ở tầng transport), 25 (SMTP) đến một port ứng dụng tùy chỉnh. Telnet không quan tâm dịch vụ ở đầu kia là gì, nó chỉ kiểm tra một câu hỏi duy nhất: port này có mở và có ai lắng nghe không.
Khả năng này biến telnet từ một giao thức đăng nhập từ xa lỗi thời thành một công cụ chẩn đoán mạng vẫn hữu dụng. Đây cũng là điểm mà phần lớn bài viết về “telnet là gì” bỏ qua: họ dừng lại ở định nghĩa và lịch sử, trong khi lý do thật khiến người ta tìm kiếm hôm nay nằm ở việc dùng telnet để test port, phần sẽ được trình bày chi tiết bên dưới.
Telnet vẫn tồn tại trong quản lý một số thiết bị mạng và hệ thống cũ, đặc biệt trong môi trường mà việc nâng cấp lên SSH tốn kém hoặc chưa cần thiết. Router và switch đời cũ của nhiều hãng vẫn hỗ trợ dòng lệnh telnet cho console quản trị cơ bản, dù các dòng thiết bị doanh nghiệp hiện đại đã chuyển sang SSH mặc định.
Camera IP giá rẻ, đầu ghi hình và một số thiết bị IoT công nghiệp cũng thường mở cổng telnet cho mục đích debug hoặc cấu hình nhà máy, một thực tế từng gây ra hàng loạt vụ botnet IoT vì mật khẩu mặc định không đổi.
Firewall cũ, bộ điều khiển PLC trong tự động hóa công nghiệp, và một số tổng đài VoIP/PBX legacy cũng nằm trong nhóm này, thường vì phần cứng hoặc firmware chưa từng được cập nhật để hỗ trợ giao thức mã hóa.
Điểm chung của các thiết bị này: chúng thường nằm trong mạng nội bộ, không expose trực tiếp ra Internet. Đó là điều kiện tiên quyết để dùng telnet an toàn tương đối, chi tiết này quay lại ở phần ưu nhược điểm bên dưới.

Telnet Client mặc định tắt trên Windows, đây là lý do phổ biến nhất khiến người dùng gõ telnet trong Command Prompt và nhận thông báo “telnet không phải lệnh nhận dạng”. Microsoft tắt tính năng này mặc định từ Windows Vista trở đi vì lo ngại bảo mật, không phải do lỗi cài đặt của bạn.
Cách trực quan nhất là qua giao diện đồ họa. Mở Control Panel, vào mục Programs, chọn “Turn Windows features on or off”. Trong danh sách hiện ra, tick vào ô “Telnet Client” rồi bấm OK. Windows sẽ cài đặt tính năng trong vài giây mà không cần khởi động lại máy.
Với người quen dòng lệnh, cách này nhanh hơn. Mở Command Prompt hoặc PowerShell với quyền Administrator, sau đó chạy một trong hai lệnh: pkgmgr /iu:"TelnetClient" hoặc dism /online /Enable-Feature /FeatureName:TelnetClient. Lệnh dism là cách được khuyến nghị trên các bản Windows 10 và 11 hiện tại vì pkgmgr đã cũ.
Sau khi bật xong, kiểm tra lại bằng cách gõ telnet trong CMD. Nếu hiện dấu nhắc Microsoft Telnet> thay vì thông báo lỗi, tức là Telnet Client đã hoạt động và sẵn sàng dùng cho các bước tiếp theo.
Sau khi kết nối vào phiên Telnet Client, một số lệnh cơ bản sau đủ để thao tác trong hầu hết tình huống:
|
Lệnh |
Công dụng |
Cú pháp |
|
open |
Mở kết nối tới host |
open <IP/hostname> <port> |
|
close |
Đóng phiên hiện tại, giữ Telnet Client mở |
close |
|
quit |
Thoát hoàn toàn khỏi Telnet Client |
quit |
|
status |
Xem trạng thái kết nối hiện tại |
status |
|
display |
Hiển thị các tham số đang thiết lập |
display |
|
send |
Gửi một ký tự điều khiển tới server |
send <ký tự> |
|
set |
Thiết lập tham số phiên (ví dụ chế độ echo) |
set <tham số> |
|
? hoặc help |
Xem danh sách lệnh |
? |
Một phiên Telnet đầy đủ thường diễn ra như sau: gõ telnet để vào chế độ dòng lệnh của client, gõ open google.com 443 để mở kết nối, quan sát phản hồi, sau đó gõ close để ngắt phiên và quit để thoát hẳn chương trình. Với thao tác kiểm tra port nhanh, bạn cũng có thể gõ thẳng telnet google.com 443 từ Command Prompt mà không cần vào chế độ tương tác trước.
Cách dùng telnet kiểm tra port là gõ telnet <IP hoặc hostname> <port>, ví dụ telnet google.com 443 để kiểm tra port 443 (HTTPS) có mở ở tầng TCP hay không, hoặc telnet 192.168.1.1 80 để kiểm tra port HTTP trên một thiết bị nội bộ. Đây là lý do thật khiến đa số người tìm “telnet là gì” rồi cần dùng nó, không phải để quản trị hệ thống mà để trả lời nhanh một câu hỏi: port này có mở không.
Cú pháp cơ bản chỉ gồm hai tham số bắt buộc: địa chỉ đích và số port. telnet <IP hoặc hostname> <port>. Nếu bỏ trống port, telnet mặc định thử port 23. Trong thực tế kiểm tra port, bạn luôn cần chỉ định rõ port muốn test.
Đây là phần ít bài viết nào giải thích rõ, dù nó quyết định bạn có hiểu đúng tình trạng mạng hay không. Có hai kết quả chính cần phân biệt:
Kết quả “port mở” không đồng nghĩa “dịch vụ hoạt động tốt”. Telnet chỉ xác nhận tầng TCP bắt tay thành công, nó không kiểm tra logic ứng dụng phía sau. Một web server treo vẫn có thể để port 80 mở trong khi không trả về nội dung nào.

Ngoài kiểm tra port thô, telnet còn dùng để test phản hồi của một số dịch vụ dựa trên text protocol. Gõ telnet <mail-server> 25 cho phép bạn gõ trực tiếp các lệnh SMTP (HELO, MAIL FROM, RCPT TO) để kiểm tra mail server có phản hồi đúng chuẩn không, một cách chẩn đoán nhanh khi nghi ngờ cấu hình email có vấn đề. Tương tự, telnet <domain> 80 rồi gõ GET / HTTP/1.1 cho phép xem phản hồi HTTP thô.
Với các tác vụ kiểm tra port phức tạp hơn, như quét nhiều port cùng lúc hoặc cần thông tin chi tiết về trạng thái kết nối, Test-NetConnection trong PowerShell hoặc công cụ nc (netcat) trên Linux/macOS phù hợp hơn telnet vì cho kết quả có cấu trúc và hỗ trợ nhiều tùy chọn hơn. Telnet vẫn thắng ở một điểm: có sẵn gần như mọi nơi và không cần cài thêm gì ngoài việc bật Telnet Client.
Telnet vẫn giữ được một vài lợi thế thực tế trong đúng phạm vi sử dụng của nó:
Nhược điểm lớn nhất không nằm ở tính năng thiếu, mà ở việc thiết kế gốc của telnet chưa từng tính đến một Internet công cộng đầy kẻ nghe lén:
Ranh giới cần chốt rõ: telnet vẫn hữu ích để kiểm tra port trong môi trường nội bộ, nhưng không nên dùng để đăng nhập và quản trị hệ thống qua mạng công cộng. Sự khác biệt không nằm ở việc “telnet có tốt không”, mà ở việc bạn đang dùng nó cho đúng mục đích (chẩn đoán) hay sai mục đích (quản trị qua Internet mở).
Telnet không phải lựa chọn duy nhất khi cần truy cập, kiểm tra hoặc quản trị hệ thống từ xa. Tùy mục đích, người dùng chọn SSH, RDP, VNC hoặc SNMP, khác biệt chính nằm ở mức độ bảo mật, kiểu giao diện và tình huống nên dùng.
|
Tiêu chí |
Telnet |
SSH |
RDP |
VNC |
SNMP |
|
Mục đích chính |
Truy cập dòng lệnh, kiểm tra port TCP |
Quản trị dòng lệnh an toàn |
Điều khiển máy Windows qua giao diện đồ họa |
Truy cập màn hình từ xa đa nền tảng |
Giám sát, quản lý thiết bị mạng |
|
Mã hóa |
Không |
Có |
Có |
Tùy cấu hình |
Tốt hơn ở SNMPv3 |
|
Port phổ biến |
23 |
22 |
3389 |
5900 |
161/162 |
|
Giao diện |
Dòng lệnh |
Dòng lệnh |
Đồ họa |
Đồ họa |
Không điều khiển trực tiếp, chủ yếu đọc thông số |
|
Xác thực |
Username/password |
Password hoặc SSH key |
Tài khoản hệ điều hành |
Password hoặc cơ chế riêng |
Community string hoặc user-based |
|
Mức an toàn |
Thấp |
Cao |
Khá cao nếu cấu hình đúng |
Trung bình, cần tunnel/VPN qua Internet |
Phụ thuộc phiên bản, ưu tiên SNMPv3 |
|
Nên dùng khi |
Kiểm tra port, lab, LAN, thiết bị legacy |
Quản trị server, VPS, cloud, router/switch hiện đại |
Remote vào máy Windows cần GUI |
Remote desktop đa nền tảng |
Monitoring router, switch, firewall, server |
SSH là lựa chọn thay thế telnet phù hợp nhất cho quản trị dòng lệnh từ xa, nhờ mã hóa và xác thực mạnh hơn. RDP và VNC phù hợp khi cần điều khiển máy tính qua giao diện đồ họa thay vì dòng lệnh. SNMP không dùng để đăng nhập điều khiển như telnet hay SSH, mà để giám sát thiết bị, đọc thông số mạng, trạng thái interface, CPU, RAM hoặc cảnh báo sự cố.
Với hạ tầng chạy thật, ví dụ một Cloud VPS phục vụ production, SSH luôn là phương án quản trị mặc định. Việc còn giữ telnet mở trên một server public để “tiện” đăng nhập là rủi ro không đáng đánh đổi, vì chi phí chuyển sang SSH gần như bằng không trong khi chi phí một lần bị sniff mật khẩu root có thể rất lớn.
Telnet là giao thức dòng lệnh ra đời từ 1969, không mã hóa, và không còn phù hợp để quản trị hệ thống qua Internet công cộng, SSH đã thay thế vai trò đó từ lâu. Nhưng telnet chưa biến mất, nó chỉ đổi vai: từ công cụ đăng nhập từ xa thành công cụ kiểm tra port nhanh gọn mà gần như máy nào cũng có sẵn.
Nếu mục tiêu của bạn là hiểu khái niệm và lịch sử, các phần đầu bài đã đủ. Nếu mục tiêu là kiểm tra ngay một port có mở hay không, câu lệnh telnet <IP hoặc hostname> <port> và cách đọc kết quả ở phần Kiểm tra port là tất cả những gì cần dùng.
Telnet dùng port 23 làm mặc định, nhưng có thể trỏ tới bất kỳ port TCP nào bằng cú pháp telnet <IP> <port>. Đây chính là khả năng biến telnet thành công cụ kiểm tra port cho mọi dịch vụ, không riêng port 23.
Vì Telnet Client bị tắt mặc định trên Windows từ Vista trở đi. Vào Control Panel, chọn “Turn Windows features on or off”, tick “Telnet Client”, hoặc chạy lệnh dism /online /Enable-Feature /FeatureName:TelnetClient với quyền Administrator.
Khác biệt lớn nhất là mã hóa: SSH mã hóa toàn bộ dữ liệu và hỗ trợ xác thực bằng key, telnet truyền plaintext không mã hóa. SSH dùng port 22, phù hợp quản trị server qua Internet; telnet dùng port 23, chỉ nên dùng trong LAN hoặc để kiểm tra port.
Telnet vẫn được dùng, nhưng không còn để quản trị hệ thống. Vai trò chính hiện nay là kiểm tra port mở hay đóng và chẩn đoán kết nối mạng nhanh, đặc biệt trong môi trường lab và mạng nội bộ.
Nhấn tổ hợp phím Ctrl + ] để quay lại dấu nhắc lệnh của Telnet Client, sau đó gõ quit và Enter để thoát hoàn toàn khỏi chương trình.
Nhiều bản Linux/macOS hiện đại không cài sẵn gói telnet, cần cài thêm (ví dụ apt install telnet trên Ubuntu). Một lựa chọn thay thế phổ biến hơn là dùng lệnh nc <IP> <port> (netcat), vốn có sẵn trên hầu hết hệ thống và làm được việc tương tự khi kiểm tra port.