21/05/2026
Chia sẻ
30101 lượt xem

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.

Telnet là gì?

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.

Ba bước luồng kết nối Telnet: client mở phiên TCP, server chấp nhận và mở phiên terminal ảo, hai bên trao đổi dữ liệu dạng văn bản thuần không mã hóa

Port 23 và vai trò của cổng trong Telnet

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.

Thiết bị sử dụng Telnet

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.

Bốn nhóm thiết bị vẫn còn dùng Telnet: router và switch đời cũ, camera IP và thiết bị IoT, firewall cũ và PLC công nghiệp, tổng đài VoIP/PBX legacy

Cách bật Telnet Client trên Windows 10 và 11

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.

Bật qua Control Panel

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.

Bật bằng lệnh nhanh

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.

Các lệnh Telnet cơ bản

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 mở hay đóng

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 lệnh

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.

Cách đọc kết quả

Đâ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:

  • Màn hình đen hoặc con trỏ nhấp nháy, không có thông báo lỗi: port đang mở và kết nối TCP thành công. Server đích đang lắng nghe trên port đó và chấp nhận kết nối, dù bạn chưa chắc dịch vụ phía sau hoạt động đúng, chỉ mới xác nhận được tầng TCP thông suốt.
  • Thông báo “Could not open connection to the host, on port [số]. Connect failed”: port đóng hoặc bị chặn, theo VnPro Forum. Nguyên nhân phổ biến nhất theo kinh nghiệm thực tế trên các diễn đàn kỹ thuật: dịch vụ đích chưa chạy, hoặc port bị firewall chặn ở chiều outbound từ máy bạn hay chiều inbound tại server đích.

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.

So sánh kết quả telnet khi kiểm tra port, port mở hiện màn hình đen hoặc con trỏ nhấp nháy, port đóng hiện thông báo Could not open connection Connect failed

Test dịch vụ cụ thể

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.

Ưu và nhược điểm của Telnet

Ưu điểm của Telnet

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ó:

  • Đơn giản, dễ dùng: cú pháp dòng lệnh ngắn gọn, phù hợp kiểm tra kết nối nhanh hoặc thao tác với thiết bị cũ không hỗ trợ giao thức khác.
  • Nhẹ, tiết kiệm tài nguyên: không có lớp mã hóa nên tiêu tốn ít CPU và bộ nhớ hơn các giao thức truy cập từ xa có mã hóa.
  • Hỗ trợ rộng: chạy được trên Windows, Linux, Unix và phần lớn thiết bị mạng, kể cả những thiết bị đời cũ không có bản cập nhật hỗ trợ SSH.
  • Hữu ích trong LAN và lab: vẫn có giá trị thật trong môi trường mạng nội bộ khép kín, hệ thống thử nghiệm, hoặc khi cần xác nhận nhanh một port có mở hay không.

Nhược điểm của Telnet

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:

  • Không mã hóa dữ liệu: mọi thứ truyền qua telnet ở dạng plaintext, dễ bị bắt gói tin (sniffing) nếu đi qua mạng không an toàn.
  • Mật khẩu dễ lộ: username, password và từng lệnh gõ vào có thể bị đọc trực tiếp nếu ai đó chặn được đường truyền.
  • Không phù hợp quản trị qua Internet: với server production hoặc hệ thống public, dùng telnet để đăng nhập là mở toang cửa cho tấn công trung gian.
  • Xác thực yếu: không hỗ trợ cơ chế xác thực mạnh như SSH key, chỉ dựa vào username/password thuần.
  • Tính năng hạn chế: chỉ truyền lệnh và phản hồi dạng text, không phù hợp nhu cầu quản trị đồ họa hay truyền file an toàn hiện đại.

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ở).

So sánh Telnet với SSH, RDP, VNC và SNMP

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

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.

banner CTA vps

Kết luận: chọn đúng công cụ theo đúng mục đích

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.

Câu hỏi thường gặp về Telnet

Telnet dùng port nào?

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ì sao gõ telnet báo “không phải lệnh nhận dạng”?

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.

Telnet và SSH khác gì nhau?

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 còn được dùng không, có bị khai tử?

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ộ.

Làm sao thoát phiên Telnet?

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.

Telnet trên Linux/macOS dùng thế nào?

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.