Linux / Unix nc (Netcat) 指令:網路檢測、Port 掃描與資料傳輸 完整教學
Linux / Unix nc (Netcat) 指令:網路檢測、Port 掃描與資料傳輸 完整教學
📅 更新日期:2026-09-22
🏷️ 分類:Linux / Unix 網路管理 系統除錯
💡 指令速查卡
| 指令名稱 | nc (Netcat) |
|---|---|
| 指令類型 | CLI Networking Utility(網路工具 / 外部執行檔) |
| 適用環境 | Linux 各發行版、Unix (AIX/FreeBSD)、macOS、WSL |
| 常用頻率 | ★★★★★ |
在 Linux 與 Unix 作業系統環境中,nc(Netcat)被譽為網路界的「瑞士軍刀」。它能透過 TCP 或 UDP 協定在網路上讀取與寫入資料,廣泛應用於**Port 連通性測試**、**通訊埠掃描**、**簡易檔案傳輸**、**網路測試服務架設**及**通訊協定除錯**,是系統管理員與網路工程師不可或缺的利器。
一、 基本語法與常用參數
nc 指令在大部分 Linux / Unix 終端機中的標準語法結構如下:
nc [選項] [目標主機/IP] [通訊埠 Port]
| 參數 / 選項 | 說明 | 預設值 / 必填 |
|---|---|---|
-z |
**零輸入輸出模式(Zero-I/O)**。僅檢查通訊埠是否開啟,不傳送任何資料。 | 選填 |
-v |
**詳細輸出模式(Verbose)**。顯示詳細連線訊息,如成功或被拒絕。 | 選填 |
-n |
直接使用 IP 地址,**不進行 DNS 域名解析**,可大幅加速掃描。 | 選填 |
-l |
**監聽模式(Listen)**。將 nc 充當 Server 端,監聽傳入的連線請求。 | 選填 |
-p [Port] |
指定本地端監聽或發起的 Port 號碼。 | 配合 -l 時必填 |
-u |
使用 **UDP 協定** 取代預設的 TCP 協定進行測試。 | 選填 |
-w [秒數] |
設定連線逾時(Timeout)時間(單位:秒)。 | 選填 |
二、 核心功能與應用情境
nc 主要作為跨主機間傳輸 raw data 的管道,在系統與網路維護上的常見應用情境如下:
- **測試遠端服務連通性**:快速驗證特定主機的防火牆或 Port 是否對外開放(如 SSH:22, HTTP:80, MySQL:3306)。
- **緊急檔案與目錄傳輸**:在未設定 SFTP / SCP 或 FTP 的伺服器間快速傳送壓縮檔或備份資料。
- **簡易 Chat 伺服器與日誌接收**:建立暫時性的雙向文字溝通頻道或收集遠端系統除錯日誌。
- **模擬 HTTP / API 請求**:手動發送原始 HTTP Header 以測試 Web Server 回應。
三、 實用指令範例
範例 1:檢查特定主機與 Port 是否正常連通
測試遠端 Web 伺服器 (80/443 Port) 或資料庫服務是否能建立連線:
# 測試 192.168.1.100 的 80 Port 是否開放 (逾時 3 秒)
nc -zv -w 3 192.168.1.100 80
# 測試 UDP 協定 Port (例如 DNS 53 Port)
nc -zuv 8.8.8.8 53
範例 2:掃描主機範圍內的開放 Port
快速掃描目標主機從 20 到 100 之間的連通埠(結合 -n 禁用 DNS 解析提升速度):
# 掃描 192.168.1.10 的 20 到 100 Port
nc -znv 192.168.1.10 20-100
範例 3:兩台主機間快速傳送檔案
在未設定 SSH 密鑰或 FTP 的情況下,透過標準輸入輸出重導向(Pipe / Redirection)傳輸檔案:
# 步驟 1:接收端 (Server: 192.168.1.50) 啟動監聽 9999 Port 並準備寫入檔案
nc -l 9999 > received_file.tar.gz
# 步驟 2:傳送端 (Client) 將檔案導向至接收端 IP 與 Port
nc 192.168.1.50 9999 < backup.tar.gz
範例 4:模擬 HTTP 請求與擷取 Header
手動對 Web 伺服器發送 GET 請求,用於測試伺服器回應狀態或軟體版本:
# 連線至目標網站的 80 Port 後,手動輸入 HTTP Header
printf "GET / HTTP/1.0\r\nHost: example.com\r\n\r\n" | nc example.com 80
四、 常見陷阱與注意事項
⚠️ 注意事項 1:OpenBSD 與 GNU 版本差異
不同 Linux 發行版預設安裝的 Netcat 版本可能不同(如
不同 Linux 發行版預設安裝的 Netcat 版本可能不同(如
netcat-openbsd 與 netcat-traditional)。例如,GNU 版本支援 -e 參數(執行程式或 Shell),但出於資安考量,Ubuntu / Debian 預設的 OpenBSD 版本已停用 -e 選項。
⚠️ 注意事項 2:傳送資料未加密風險
nc 的資料傳輸過程完全是**明文(Plaintext)**。請勿透過公用網路使用 nc 傳送敏感密碼、個人隱私資料或未加密的資料庫備份檔案;如有加密需求,應改用 scp、rsync 或搭配 openssl。
💡 小技巧:監聽 1024 以下特權 Port 需要 Root 權限
若要讓
若要讓
nc -l 監聽系統特權 Port(如 80, 443, 22),必須使用 sudo nc -l [Port] 執行,否則會出現 Permission denied 錯誤。
五、 相關指令推薦
nmap:專業級網路掃描與安全稽核工具,支援高階主機與 Port 探測。curl/wget:用於與 Web 伺服器互動及下載檔案的常用 CLI 工具。socat:Netcat 的進階增強版,支援 SSL/TLS 加密傳輸與雙向數據流重導向。
六、 參考資源與官方文件
如需進一步瞭解 Netcat 的高級用法與不同衍生版本手冊:
留言
張貼留言