如何在 Ubuntu 伺服器上使用 tftpd-hpa 設定 TFTP 伺服器

安裝 Ubuntu 的tftpd-hpa伺服器和tftp-hpa客戶端。此配置會將檔案從單獨的目錄傳輸到/srv/tftp本機,並將上傳的檔案保存在單獨的目錄中。請查看Ubuntu 伺服器軟體包和客戶端軟體包清單。

安全性: TFTP 沒有登入或加密功能。應將存取權限限制在受信任的區域網路內;可存取的用戶端可以讀取可用文件,並在權限允許的情況下上傳文件。切勿傳輸機密資訊。 TFTP規格中描述了其安全限制。

設定 TFTP 伺服器

1. 安裝伺服器和客戶端

刷新 APT 元數據,然後安裝這兩個軟體包:

sudo apt update
sudo apt install tftpd-hpa tftp-hpa
Ubuntu 伺服器終端機顯示安裝 tftpd-hpa 和 tftp-hpa 的命令
安裝伺服器和客戶端軟體包。

2. 配置 TFTP 根目錄

編輯軟體包設定檔:

sudo nano /etc/default/tftpd-hpa

設定以下值:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure --create --umask 027"

--secure將守護程序限制在其配置的根目錄,--create允許上傳文件,並將--umask 027新上傳的文件限制為特定模式0640。 Ubuntu tftpd 手冊中記錄了這些選項。按 Ctrl+O 儲存,按 Enter 鍵,然後按 Ctrl+X 儲存。

因為--secure這樣會將/srv/tftp客戶端可見的根目錄設為根目錄,所以檔案名稱是相對於該根目錄的:使用 ` /path/to/file` hello.txt,而不是/srv/tftp/hello.txt`/path/to/file`。 TFTP 用戶端不會瀏覽目錄,因此需要維護一個已發佈檔案名稱及其路徑的清單。

終端編輯器顯示 tftpd-hpa 已設定為使用 /srv/tftp 根目錄、安全模式、上傳權限和 umask 027。
限製檔案大小並設定上傳遮罩。

3. 建立根目錄和上傳目錄

保持主根目錄的擁有者為 root,並僅授予上傳資料夾寫入權限:

sudo install -d -o root -g root -m 0755 /srv/tftp
sudo install -d -o tftp -g tftp -m 0750 /srv/tftp/upload

守護程式可以讀取根目錄,但只有tftp帳戶才能寫入/srv/tftp/upload。避免使用諸如 `.` 之類的權限將整個目錄樹設定為全域可寫入777。

公共根目錄中的檔案應對所有授權客戶端開放讀取權限。該目錄應僅限於啟動鏡像、韌體或其他專用於該網路的檔案。對於私密傳輸,請選擇具有身份驗證和加密功能的協定。

Ubuntu 終端使用 tftp 使用者和群組以及權限 0750 建立 /srv/tftp/upload 服務
只有上傳子目錄可寫。

4. 新增要服務的文件

在根目錄下建立一個已知檔案。 TFTP 的預設讀取檢查要求提供的檔案必須可公開讀取,因此請設定模式0644:

echo 'TFTP test file' | sudo tee /srv/tftp/hello.txt
sudo chmod 0644 /srv/tftp/hello.txt
Ubuntu 伺服器終端將 hello.txt 寫入 /srv/tftp 目錄,並將檔案權限設為 0644。
建立一個已知檔案用於下載測試。

5. 啟用並重新啟動服務

開機時啟用該設備,重新啟動設備以應用設置,並檢查其狀態:

sudo systemctl enable tftpd-hpa
sudo systemctl restart tftpd-hpa
sudo systemctl status tftpd-hpa --no-pager

如果啟動失敗,請使用下列命令檢查服務日誌sudo journalctl -u tftpd-hpa -b --no-pager。

用於啟用、重新啟動和檢查 tftpd-hpa 服務的 Ubuntu Server 終端命令
更改設定後,請重新啟動服務。

6. 限制防火牆訪問

如果啟用了 UFW,則僅允許來自客戶端子網的初始請求。將範例網路替換為您信任的 LAN 網路範圍:

sudo ufw allow from 192.168.1.0/24 to any port 69 proto udp
sudo ufw status

有關來源網路規則,請參閱 Ubuntu 的UFW 指南。 TFTP 協定首先使用 UDP 連接埠 69 啟動,然後使用伺服器選擇的 UDP 連接埠傳輸檔案數據,具體規則請參閱協定規格。嚴格的防火牆、路由器或 NAT 裝置可能會允許請求,但會阻止資料傳輸。如果用戶端逾時,請使用支援 TFTP 的連線追蹤或適當的防火牆策略;切勿開放所有 UDP 連接埠或將 TFTP 暴露在網際網路上。此命令會新增一條規則,但不會啟用 UFW。如果您透過 SSH 管理伺服器,並且打算啟用未啟動的防火牆,請先允許 SSH 連接,以確保遠端存取暢通。

UFW 指令僅允許來自範例 192.168.1.0/24 子網路的 UDP 連接埠 69。
允許來自受信任子網路的初始請求。

測試下載和上傳

7. 從 Ubuntu 用戶端下載

在伺服器上執行命令ip -brief address並記下其可存取的區域網路位址。在 Ubuntu 用戶端上,如果需要,請安裝客戶端。將192.0.2.10以下內容替換為實際的伺服器位址:

sudo apt install tftp-hpa
tftp 192.0.2.10
tftp> binary
tftp> get hello.txt
tftp> quit

文件保存在客戶端的目前目錄中。 Ubuntu tftp 用戶端手冊對此binary有get詳細說明。建議對韌體、啟動鏡像以及位元組必須保持不變的檔案使用二進位模式。 Linux 檔案名稱區分大小寫,因此請務必準確輸入每個遠端檔案名稱。

使用 TFTP 用戶端終端連接到範例伺服器,並以二進位模式下載 hello.txt 檔案。
以二進位模式請求已知檔案。

8. 上傳到受限資料夾

在客戶端,建立一個測試文件,然後將其傳送到伺服器上傳目錄下的某個路徑:

printf 'Upload test' > upload-check.txt
tftp 192.0.2.10
tftp> binary
tftp> put upload-check.txt upload/upload-check.txt
tftp> quit

請使用伺服器的實際位址。遠端路徑是相對於伺服器的/srv/tftp;請使用以下命令在伺服器上驗證上傳是否成功sudo ls -l /srv/tftp/upload/。 TFTP 用戶端使用已知的檔案名,而不是瀏覽目錄清單。

TFTP客戶端終端以二進位模式傳送upload/upload-check.txt至upload-check.txt
上傳的檔案會儲存在可寫入的子目錄中。

排除常見錯誤

  • 檔案未找到:請檢查檔案名稱相對於目標目錄的位置/srv/tftp,並確認檔案是否存在。
  • 存取違規:將提供的文件設為公開可讀;對於上傳文件,檢查tftp目標位置的所有權並確認--create已設定。
  • 逾時:確認客戶端使用伺服器可達位址,服務處於活動狀態,且防火牆允許協商的 UDP 資料流。

若要隔離網路問題,請先從同一區域網路內的用戶端進行測試。如果測試成功,但透過路由連接的用戶端連線逾時,請檢查路由器或防火牆是否支援 TFTP 協議,以及是否對協商的資料連接埠進行了相應的處理。

對於唯讀服務,請--create從服務中刪除TFTP_OPTIONS並重新啟動tftpd-hpa。

留下評論

如何在Linux系統上使用Cameractrls更改網路攝影機設置

如何在Linux系統上使用Cameractrls更改網路攝影機設置

使用 Cameractrls 在 Linux 上變更網路攝影機設定:調整曝光、色彩、減少閃爍和其他支援的控件,然後檢查相容的視訊模式。

如何在 Linux 上安裝 PhpStorm:工具箱、Tar.gz、Snap 和 AUR

如何在 Linux 上安裝 PhpStorm:工具箱、Tar.gz、Snap 和 AUR

在 Linux 系統上,您可以使用 JetBrains Toolbox 或獨立的 tar.gz 壓縮套件安裝 PhpStorm,此外還有 Snap 和 Arch AUR 版本可供選擇。 Java 已預先安裝。

如何在 Linux 系統上將 CD-ROM 備份為 ISO 文件

如何在 Linux 系統上將 CD-ROM 備份為 ISO 文件

在 Linux 上使用 GNOME Disks 或 dd 建立 CD-ROM ISO。識別光碟機,監控複製過程,驗證鏡像,並了解何時損壞的光碟或音訊光碟需要其他工具。

如何在 XFCE 4 上設定雙面板

如何在 XFCE 4 上設定雙面板

為每個顯示器建立一個單獨的 XFCE 4 面板,將第二個面板指派給正確的輸出,調整其位置和大小,並新增所需的啟動器和狀態項目。

如何在Linux上安裝Cisco Packet Tracer

如何在Linux上安裝Cisco Packet Tracer

下載適用於 Ubuntu 64 位元系統的 Cisco Packet Tracer 9.0.1,使用 APT 安裝 DEB 軟體包,在終端機中接受許可協議,然後登入以啟動實驗環境。

如何在Linux系統下使用GIMP摳圖

如何在Linux系統下使用GIMP摳圖

在 Linux 系統上使用 GIMP 去除照片背景:描繪主體,刪除選定的背景,保持透明度,並匯出可重複使用的 PNG 檔案。

免費下載 FlightGear:官方安裝指南

免費下載 FlightGear:官方安裝指南

從官方網站免費下載 FlightGear。比較 Windows、macOS 和 Linux 版本的軟體包,安裝資料文件,即可開始您的首次飛行。

Google Tasks桌面應用程式:如何在電腦上使用

Google Tasks桌面應用程式:如何在電腦上使用

在瀏覽器中開啟 Google Tasks,新增 Chrome 捷徑或應用程式啟動,並透過行事曆和 Gmail 管理有日期的待辦事項。

OKSampler:一款免費、簡單的鍵盤節拍音樂採樣器

OKSampler:一款免費、簡單的鍵盤節拍音樂採樣器

OKSampler 可以將 MP3 片段對應到鍵盤按鍵,並支援音訊循環播放。了解這款經典免費軟體的功能、其舊功能的缺失以及下載前需要檢查的事項。

如何在 Linux 系統上安裝 Wireshark:Ubuntu、Fedora、Arch 等

如何在 Linux 系統上安裝 Wireshark:Ubuntu、Fedora、Arch 等

使用目前軟體包命令在 Ubuntu、Debian、Fedora、Arch 或 openSUSE 上安裝 Wireshark,然後安全地配置即時資料包擷取。