iT邦幫忙

2024 iThome 鐵人賽

DAY 20
0

什麼是 FTP 伺服器呢?

FTP 伺服器是一種軟體應用程式,用於在不同裝置之間傳輸檔案(例如 Mac、Windows 或 Linux 電腦)。儘管這聽起來可能略顯複雜,但實際上,FTP 伺服器只是具備 FTP 位址、專門用來接收 FTP 連線的電腦。這些伺服器主要執行兩項簡單的任務:「取得」與「放置」。您可以從 FTP 伺服器下載檔案,或將檔案上傳至 FTP 伺服器。上傳檔案時,資料會從您的個人裝置傳輸到伺服器;下載檔案時,則是從伺服器傳送到您的裝置。因此,FTP 伺服器在檔案傳輸過程中,扮演著寄件者與收件者之間的中介角色。

FTP 伺服器通常提供兩種傳輸模式:主動模式(Active Mode)和被動模式(Passive Mode)。在主動模式下,伺服器會主動連接到客戶端指定的 port號 進行檔案傳輸;而在被動模式下,伺服器則等待客戶端連接到伺服器指定的埠進行檔案傳輸,這種模式特別適合於客戶端位於防火牆後的情況。

FTP 伺服器廣泛應用於網站維護、檔案分享和備份等用途。然而,由於 FTP 傳輸的數據未經加密,安全性較低,因此在許多情況下已被更安全的協定,如 SFTP 或 FTPS,所取代,這些協定提供了加密的傳輸通道,能有效保護數據安全。

常見的FTP伺服器軟體

  • FileZilla Server:免費、開源,適合Windows系統,使用簡單。
  • ProFTPD:靈活且功能豐富,常用於Linux系統,支持多種協議。
  • vsftpd:輕量且安全,常見於Linux系統。
  • Pure-FTPd:注重安全性和高效能,支持加密功能。

實作

本篇用 vsftp 做實作,首先安裝 vsftp

sudo apt-get install vsftp

設定 vsftp

sudo vim /etc/vsftpd.conf

如果不知道怎麼設定的話,可以參考以下

listen=YES
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
utf8_filesystem=YES
pasv_enable=YES
pasv_addr_resolve=YES
pasv_max_port=3000
pasv_min_port=20000

注意: listen_ipv6 與 listen 是互斥選項,listen 代表監聽IPv4,listen_ipv6 代表監聽IPv6,只能擇一開啟

以下是設定的內容 :

  • listen=YES: 將作為一個獨立的Server運行,並監聽指定的 IP 地址和端口
  • anonymous_enable=YES: 允許匿名訪問
  • no_anon_password=YES: 匿名用戶登入時不詢問密碼
  • anon_upload_enable=YES: 匿名用戶可以上傳
  • anon_mkdir_write_enable=YES: 匿名用戶可以建立目錄
  • local_enable=YES: 允許本機用戶登入
  • write_enable=YES: 設定允許使用者可以上傳檔案與資料夾
  • local_umask=022: 本地用戶上傳文件的umask
  • xferlog_enable=YES: 啟用上傳/下載日誌紀錄
  • utf8_filesystem=YES: 指定了文件系統使用 UTF-8 編碼
  • pasv_enable=YES: 該設定啟用了被動模式(Passive Mode)。在被動模式下,服務器會告訴客戶端使用哪個端口來建立數據連接。
  • pasv_addr_resolve=YES: 指定了使用域名解析來解析被動模式下的服務器 IP 地址
  • pasv_max_port=30000: 該設定指定了被動模式可用的最大端口號
  • pasv_min_port=20000: 該設定指定了被動模式可用的最小端口號

當你設定完成時,你可以使用 sudo systemctl status vsftpd.service 來查看你的服務狀態,建議這時候重啟服務一下 sudo systemctl restart vsftpd.service,如果你想測試的話,建議你可以使用 FileZilla 來做測試~

結論與感想

本篇內容應該是我遇到新知識的一篇文章,所以當時得知這個消息的時候,就想著一定要在鐵人賽來跟大家分享,也希望大家可以有所收穫~

資料來源

https://www.tsg.com.tw/blog-detail4-164-0-ftp.htm

https://www.serv-u.com/ftp-server-windows/server-setup

https://www.techtarget.com/searchnetworking/definition/File-Transfer-Protocol-FTP


上一篇
Day19 - 設置資料庫伺服器
下一篇
Day21 - 用 linux 設置郵件伺服器 Mail Server
系列文
0 到 100 Linux快打旋風30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言