目錄
telnet

Telnet (teletype network)是一個促進遠端通訊和網路測試的命令列工具。它被廣泛用於管理伺服器和設備,但其缺乏加密,引發了現代環境中的安全問題,導致其逐漸被安全外殼(SSH)等替代方案所取代。
如今,telnet 仍然是測試網路服務、調試連接問題、分析伺服器回應和了解網路協定的寶貴實用程式。
在本文章中,小編將介紹在 Linux 中使用 telnet 所需了解的所有知識,包括 telnet 安裝、基本語法、選項、現代用例以及重要的安全注意事項。在本指南結束時,您將能夠在受控環境中使用此多功能網路工具。
準備資源
在 Linux 中使用 telnet 之前,需要準備兩台機器:一台作為 telnet 客戶端,另一台作為目標系統。
您可以使用兩台 Linux 桌上型電腦、一台桌上型電腦和一台虛擬專用伺服器 (VPS),或者像本教學一樣,使用來自 TAKI Cloud 的兩個 VPS 設定。如果您選擇後者,請選擇任何適合您需求的方案。由於我們只練習 telnet 指令,因此最基本的基礎運算 25 GB SSD 就足以滿足兩台伺服器的需求。
接下來,確保您擁有目標機器的授權並且知道其 IP 位址。如果您是 TAKI Cloud 雲端主機用戶,您可以透過進入 TAKI Cloud 客戶服務中心 → 我的產品 & 服務 → 產品 / 服務 → VPS 資訊在 TAKI Cloud 雲端主機控制台中找到您伺服器的 IP 。

確認您具有在用戶端和目標系統上安裝和設定 telnet 的管理員或 sudo 權限。對於 TAKI Cloud 雲端主機客戶,我們授予您完全根訪問權限,以便您可以根據需要修改您的伺服器。
此外,準備終端軟體在客戶端機器上執行 telnet 指令。您可以使用 Linux 的內建終端機或第三方軟體,如 PuTTY。另外,TAKI Cloud 提供了一個瀏覽器終端,讓您直接在瀏覽器中執行命令,而無需安裝其他應用程式。
若要使用此功能,請點選伺服器儀表板中的對應控制台按鈕。這將開啟一個新的瀏覽器選項卡,您可以在其中開始執行命令。

telnet 安裝
在本節中,我們將在主客戶端機器和目標遠端系統上安裝 telnet。請仔細按照說明進行操作,並確保在正確的機器上執行指令。
客戶端機器
- 更新和升級系統軟體包以保持您的系統最新:
- 使用 Debian 的系統(例如 Ubuntu 和 Kali Linux):
sudo apt update && sudo apt upgrade
- 使用 RHEL 的系統(例如 CentOS 和 Fedora):
sudo yum upgrade
- 安裝 telnet 伺服器使用的指令:
# 用於 Debian、Ubuntu 系統指令
sudo apt install telnetd
# 用於 RHEL、CentOS、AlmaLinux、RockyLinux 系統指令
sudo yum install telnet -y
- 輸入以下命令驗證客戶端是否安裝成功
telnet
如果顯示如下互動式 telnet 會話,則表示安裝成功:

使用以下命令退出會話:
quit
目標遠端系統
在目標系統上,您需要安裝 telnet 伺服器,在防火牆中開啟其連接埠並建立專用用戶,因為出於安全原因,telnet 預設不允許 root 存取。請依照以下步驟操作:
- 更新和升級您的系統包,類似於客戶端機器:
# 用於 Debian、Ubuntu 系統指令
sudo apt update && sudo apt upgrade
# 用於 RHEL、CentOS、AlmaLinux、RockyLinux 系統指令
sudo yum update -y
- 使用以下命令安裝 telnet 伺服器:
# 用於 Debian、Ubuntu 系統指令
sudo apt install telnetd
# 用於 RHEL、CentOS、AlmaLinux、RockyLinux 系統指令
sudo yum install telnet -y
- 在 Debian 的發行版上,telnet 伺服器會自動啟動。對於 RHEL 的系統,手動啟動並啟用該服務:
sudo systemctl start telnet.socket
sudo systemctl enable telnet.socket
- 驗證服務狀態以確保它確實正在運行:
# 用於 Debian、Ubuntu 系統指令
systemctl status inetd
# 用於 RHEL、CentOS、AlmaLinux、RockyLinux 系統指令
systemctl status telnet.socket

- 允許 telnet 連接 port(預設為23)通過防火牆。如果您不使用任何防火牆,請跳過此步驟。以下針對您的發行版執行以下命令:
- 對於使用簡單防火牆(UFW)的 Debian 或 Ubuntu 系統:
sudo ufw allow 23/tcp
sudo ufw reload
- 對於使用 Firewalld 的 RHEL、CentOS、AlmaLinux、RockyLinux 系統:
sudo firewall-cmd --permanent --add-port=23/tcp
sudo firewall-cmd --reload
- 專門為 telnet 建立一個新用戶,用你喜歡的用戶名取代 test_user:
sudo useradd test_user
- 透過執行以下命令為使用者設定密碼:
sudo passwd test_user
系統將提示您輸入並確認密碼。

# Debian 的系統
sudo apt remove telnet telnetd
# RHEL 的系統
sudo dnf remove telnet telnet-server
telnet 指令語法與選項
telnet [options] [remote_server_ip] [port]
- telnet – 呼叫 telnet 的指令
- [options] – 可選;修改 telnet 指令行為的標誌。
- [remote_server_ip] – 您想要存取的遠端伺服器的 IP 位址。
- [port] – 可選;要連接的連接埠號碼。如果未指定,telnet 將使用預設連接 port 23
執行時,該命令將與指定伺服器建立連線。系統將提示您輸入先前為 telnet 建立的使用者名稱和密碼。
與許多Linux 命令(如ssh、scp和ftp )一樣,您可以將選項附加到 telnet 命令以自訂其行為。以下是最常用的選項及其用途:
Option | Purpose |
-4 | 強制使用 IPv4。 |
-6 | 強制使用 IPv6。 |
-a | 嘗試根據本機使用者名稱進行自動身份驗證。 |
-b | 指定在建立連線之前要綁定的本機 IP 位址。 |
-c | 禁止讀取使用者的 .telnetrc 檔案。 |
-d | 啟用調試模式以顯示詳細的診斷資訊。 |
-e char | 設定 telnet 會話的轉義字元。 |
-E | 停用轉義字符,將所有輸入視為文字。 |
-k | 在驗證期間傳送指定的 Kerberos 主體。 |
-l user | 指定自動登入的使用者名稱。 |
-n file | 將會話記錄到指定的文件中。 |
-x | 如果支持,則啟用會話加密。 |
-X | 停用 TELNET STARTTLS 選項。 |
-? | 顯示 telnet 的幫助選單。 |
-V | 顯示 telnet 用戶端的版本。 |
例如,如果您有多個 telnet 使用者並且想要最初指定一個,則可以執行下列命令。用您的實際憑證替換使用者和遠端伺服器 ip:
telnet -l user_remote_server_ip
成功登入遠端機器後,您可以像與主伺服器一樣與其 shell 進行互動。
如果您想退出會話,只需輸入:
logout
您將與 telnet 會話斷開連線。
您也可以進入互動式會話,就像我們之前測試 telnet 是否正確安裝一樣,透過輸入 telnet 而不輸入任何參數:
telnet
telnet 範例
以下是在目前環境中使用 telnet 的一些安全性範例,從檢查郵件伺服器到解決自訂連接 port 問題。
測試 SMTP 伺服器
Telnet 可以協助診斷簡單郵件傳輸協定 (SMTP) 伺服器問題並驗證設定。這個過程通常涉及測試伺服器是否接受連接、正確處理命令以及處理電子郵件傳輸。
若要使用 telnet 連線至 SMTP 伺服器,請依照下列步驟操作:
- 執行以下命令來發起連線。將 smtp.sample.com 替換為您的 SMTP 伺服器的詳細資訊:
telnet smtp.sample.com 25
如果連線成功,您將看到來自郵件伺服器的歡迎訊息,類似於:

- 使用您正在連接的網域向 SMTP 伺服器介紹您自己。用您的實際地址替換 sample.com:
HELO sample.com

- 輸入以下命令來定義電子郵件寄件者:
MAIL FROM:
- 對電子郵件收件者執行相同操作:
RCPT TO:
- 若要輸入電子郵件內容,請輸入:
DATA
- 伺服器將提示您輸入電子郵件正文。鍵入您的訊息,並在新行上輸入句點 ( . ) 來表示訊息的結束:
Subject: Test Email
This is a test email sent using telnet.
.
伺服器應確認該訊息已排隊。
- 完成測試後,請輸入以下命令退出會話:
QUIT
測試 POP3 伺服器
除了測試 SMTP 伺服器之外,telnet 還可方便地用於檢查郵局協定 3 (POP3) 伺服器。使用此方法,您可以進行身份驗證並與收件匣交互,以解決電子郵件擷取問題。
測試POP3伺服器的指南如下:
- 鍵入以下命令,將 sample.com 替換為您實際的 POP3 伺服器的主機名稱:
telnet pop.sample.com 110
- 輸入您的完整電子郵件地址或僅輸入網域名稱。在某些情況下,您可能需要測試兩者以查看哪一個有效:
USER address@sample.com
USER sample.com
- 一旦伺服器回應+OK,請輸入您的電子郵件密碼登入:
PASS your_password
- 嘗試查看收件匣中的電子郵件總數:
STAT
- 列出所有電子郵件及其 ID 和大小:
LIST
- 您也可以檢索電子郵件的內容。將id替換為電子郵件的唯一 ID 號碼:
RETR id
- 驗證伺服器的功能後,不要忘記退出 telnet。指令:
QUIT
測試 HTTP 伺服器
您可以使用 telnet 連接到超文本傳輸協定 (HTTP) 伺服器的連接 port 80(HTTP 流量的預設連接 port),從而偵錯超文本傳輸協定 (HTTP) 伺服器。這種方法可以讓您手動發送請求並檢查伺服器是否正確回應。
如果你的遠端機器有 HTTP 伺服器,可以按照以下方法調試它:
- 透過執行以下命令連接到遠端伺服器:
telnet remote_server_ip 80
- 輸入以下 HTTP GET 請求以擷取伺服器的預設頁面。將 sample.com 替換為指向伺服器的網址:
GET / HTTP/1.1
Host: sample.com
輸入請求後,請確保按兩次 Enter 。
- 伺服器將使用 HTTP 標頭進行回應,並且在大多數情況下,也會回應所請求頁面的內容。
與往常一樣,調試完成後輸入quit 。
測試 FTP 伺服器
使用 telnet 測試檔案傳輸協定 (FTP) 伺服器是一種快速驗證是否正常運作以及預設連接 port 21 是否未被封鎖的方法。請注意,這僅用於測試目的。傳輸檔案時,請務必使用更安全的協議,如 FTPS 或 SFTP。
以下是檢查 FTP 伺服器的說明:
- 使用此命令存取伺服器,將 remote_server_ip 替換為您的實際伺服器詳細資訊:
telnet remote_server_ip 21
- 您可以手動傳送基本 FTP 指令來檢查伺服器的功能。例如,檢查伺服器類型和版本:
SYST
- 或者,驗證您的 FTP 伺服器支援的功能:
FEAT
與 IRC 伺服器交互
網路中繼聊天 (IRC) 是一種用於群組聊天和討論的即時文字通訊協定。雖然現代訊息傳遞平台已基本取代了它,但您仍然可以使用 telnet 連接到 IRC 伺服器來測試其可用性並與其進行互動。
請記住,IRC 是一種純文字協議,因此請避免透過它共享敏感資訊。請依照下列步驟使用 telnet 連線到 IRC 伺服器:
- 使用下列命令連接到所需的 IRC 伺服器的預設連接 port 6667:
telnet irc.your_domain.com 6667
- 在伺服器歡迎您之後,發送 NICK 命令來定義您的暱稱:
NICK your_nickname
- 設定您的使用者名稱並提供個人識別碼:
USER your_username 0 * :Your Full Name
- 使用JOIN指令進入 IRC 頻道。將#channel_name替換為您要加入的頻道名稱:
JOIN #channel_name
- 若要向頻道發送訊息,請使用:
PRIVMSG #channel_name :Your message here
- 完成後,輸入以下命令離開伺服器:
QUIT :Goodbye message
檢查自訂連接 Port
最後但同樣重要的一點是,telnet 可以讓你測試與任何開放 port 的連接,如果你在自定義 port 上執行非標準服務,或者你將服務的默認 port 更改為自定義 port (例如將 SSH 從 port 22 切換到另一個 port) ,它就特別有用。
具體操作如下:
- 指定要測試的遠端伺服器的 IP 位址和連接 port:
telnet remote_server_ip port
如果連接 port 開放且服務正在運行,您將收到回應。否則,telnet 將顯示 host: connection time out . 錯誤訊息。
- 根據自訂連接 port 上執行的服務,發送適當的命令與其互動。例如,如果它是一個自訂的應用程式,您可以使用下面的命令,將/custom_endpoint 替換為您的服務定義的路徑:
GET /custom_endpoint HTTP/1.1
Host: remote_server_ip
根據應用程式,服務將使用特定於自訂連接 port 的資料進行回應,例如標題、訊息甚至錯誤代碼。
使用 telnet 指令的安全注意事項
Telnet 歷史上用於遠端連線和網路管理。但是,所有資料,包括用戶名和密碼等敏感資訊,都是以明文形式傳輸的。這使得它很容易受到攻擊者的攔截,尤其是在公共或不受信任的網路上。
由於這些風險,您應該僅在受控或本機環境中執行 telnet 來執行基本偵錯任務,例如測試開放連接埠或驗證 SMTP 通訊。
為了確保遠端伺服器通訊的安全,最好使用 SSH,因為該協定會加密傳輸中的所有數據,保護您的資訊免受潛在的竊聽。
如果您需要測試安全性協定或加密服務,請考慮更安全的替代方案,例如 openssl 或 Netcat ( nc )。這些工具可讓您安全地調試和測試網路連接,這對於敏感應用程式來說是理想的選擇。
結論
在本文中,我們介紹如何使用 telnet 命令來測試 SMTP、POP3、HTTP 伺服器和指定連接埠等服務。這表明 telnet 在受控或本地 Linux 環境中解決網路問題時仍然有用。
但是,由於缺乏加密,您應該負責任地使用 telnet 協議,並且僅將其用於非敏感任務。我們建議使用 SSH、openssl 或 nc 進行安全遠端連線或加密服務評估。
透過了解 telnet 的優勢和風險,您可以有效地將其用於特定場景,同時為關鍵應用程式優先考慮安全替代方案。此外,在使用 telnet 存取遠端伺服器或服務之前,請確保您擁有適當的授權。
如果您對 telnet 有任何疑問或想分享您如何使用它,請隨意使用下面的評論框。
Linux telnet 指令常見問題解答
Linux 中的 telnet 命令用於透過建立與遠端主機的純文字連線來測試和排除網路服務故障。它有助於驗證特定連接 port 是否開啟以及 SMTP、HTTP 和 POP3 等服務是否如預期回應。
Telnet以明文傳輸數據,不安全,而 SSH 則對所有通訊進行加密,確保資料的安全。 Telnet 通常用於受控環境中的基本調試,而 SSH 是安全遠端伺服器存取和系統管理的首選工具。
不,telnet 無法測試安全伺服器,因為它不支援加密連線。相反,使用 openssl 或 nc 之類的工具來測試執行需要加密的安全協定(例如 HTTPS 或 SMTPS)的伺服器。