安裝
sudo apt-get install vsftpd
配置
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak sudo vim /etc/vsftpd.conf
vsftpd.conf
anonymous_enable=NO #讓本地賬號可以訪問 local_enable=YES #允許本地用戶登陸 write_enable=YES #寫權限 local_umask=022 Passive mode pasv_enable=YES ;允許被動模式 pasv_min_port=41000 pasv_max_port=42000 #流量控制 max_clients=100 ; 允許的最大連接數,定義為100,默認為0,表沒有限制 max_per_ip=5 ; 每個IP允許的連接數,0表沒有限制,需要運行於獨立模式方可 local_max_rate=200000 ;用戶寬帶限制 200k #鎖定目錄 chroot_local_user=YES ;禁止用戶離開主目錄 chroot_list_enable=NO #chroot_list_enable=YES # 如果啟動這項功能,則所有列在chroot_list_file之中的使用者不能更改根目錄 #chroot_list_file=/etc/vsftpd/chroot_list # 指定限制的用戶文件 allow_writeable_chroot=YES #listen=YES # ftp服務器將處於獨立啟動模式 local_root=/home/ftp # 設置一個本地用戶登錄后進入到的目錄 # 其它 dirmessage_enable=YES xferlog_enable=YES # 允許虛擬用戶 guest_enable=YES guest_username=vsftpd user_config_dir=/etc/vsftpd_user_conf pam_service_name=vsftpd.vu anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES anon_umask=022 anon_max_rate=50000 ;匿名用戶最大帶寬,單位為bps
root賬號登錄
1、vim /etc/ftpusers
2、注釋掉 root 用戶
添加用戶,分配權限
添加目錄
mkdir /home/ftp # 創建根目錄
mkdir /home/ftp/data # 創建子目錄
chmod -R 777 /home/ftp # 修改ftp這個目錄的權限
添加用戶
touch /etc/vsftpd/allowed_users # 創建一個文件allowed_users,添加完用戶有寫入改文件
useradd -d /home/ftp/data -s /sbin/nologin zhangxw # 添加訪問用戶
passwd zhangxw # 設置該用戶的密碼
刪除用戶
userdel zhangxw # 刪除ftp某個用戶
多用戶多權限FTP
chmod 755 /var/ftp # 更改根目錄訪問權限 #添加用戶 ftp_pub 並設置歸屬用戶組為 ftp-g 以及設置缺省目錄(FTP登陸目錄) useradd -g ftp -d /home/ftp/user1 user1 passwd user1 chown user1:ftp /home/ftp/user1 # 更改文件所有者 mkdir /var/ftp/user1 # 創建目錄 chmod -R ug=rw,o= /var/ftp/user1 # 更改權限
常用命令
sudo service vsftpd start # 啟動 sudo service vsftpd status # 查看vsftpd的狀態 sudo service vsftpd restart ftp ip #登錄,例如ftp 1.1.1.1 cd # 目錄切換 ls|dir #列出當下目錄中文件內容 quit|close|bye # 退出 get|mget 目的文件 下載位置 #下載文件,get下載單個文件,mget下載多個文件.*.*代表所有文件 put local_filt remote_fil # 上傳文件
Connect to FTP server
$ ftp ftp-server-ip Connected to ubuntu-ftp. 220 (vsFTPd 3.0.3) Name (ubuntu-ftp:lubos): ftpuser 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. -rw-r--r-- 1 0 0 12 Feb 15 08:34 FTP-TEST -rw-r--r-- 1 1001 1001 8980 Apr 20 2016 examples.desktop 226 Directory send OK. ftp>
Open Nautilus and click on Other Locations
. Enter ftp://FTP-SERVER-HOSTNAME-OR-IP-ADDRESS
and click Connect
.
FTP 瀏覽器訪問地址:
ftp:ip
通過外網端口映射訪問FTP
首先了解,FTP使用兩個端口進行通信。一個作為控制端口(登陸用),一個作為數據傳輸端口。
主動模式:客戶端請求21 20兩個固定端口進行連接。所以如果要經過外網映射用主動模式通信的話除非把外網端口21映射為內網的21,外網的20映射為內網的20才行。
被動模式:客戶端連接到服務器21端口后,服務器返回一個任意>1024的端口給客戶端,客戶端連接此數據端口。
1)port方式:主動模式 port(主動)方式的連接過程是: 客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。 當需要傳送數據時,服務器從20端口向客戶端的空閑端口發送連接請求,建立一條數據鏈路來傳送數據。 2)pasv方式:被動模式 pasv(被動)方式的連接過程是: 客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。 當需要傳送數據時,客戶端向服務器的空閑端口發送連接請求,建立一條數據鏈路來傳送數據
問題:裝好VSFTP后,FTP不能使用,提示PASV模式失敗,嘗試PORT模式。
原因:iptables防火牆擋住了PASV的端口
解決:修改VSFTP配置文件,開放防火牆端口
1.打開VSFTP配置文件
vi /etc/vsftpd/vsftpd.conf
未尾添加:
pasv_enable=YES # 設置是否允許pasv模式 pasv_min_port=40000 # pasv使用的最小端口 pasv_max_port=40080 # pasv使用的最大端口 pasv_promiscuous=YES # 是否屏蔽對pasv進行安全檢查,(當有安全隧道時可禁用)
2.打開iptables文件
vi /etc/sysconfig/iptables
加入:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 40000:40080 -j ACCEPT
第三方工具
使用Xftp工具。相信很多使用Linux服務的小伙伴都知道這個工具。具體的安裝、下載就不多說了,比較簡單。下面是它的使用。
打開這個工具,新建一個連接,具體的配置,如下圖所示,
參考地址
https://linuxconfig.org/how-to-setup-ftp-server-on-ubuntu-18-04-bionic-beaver-with-vsftpd
通過外網端口映射訪問FTP 作者:Lubos Rendek原文鏈接:https://blog.csdn.net/geqiandebei/article/details/45886843
https://blog.csdn.net/hajistark/article/details/82954777
https://www.cnblogs.com/spaceship9/archive/2013/06/27/3159243.html
作者:「zxw136511485」 原文鏈接:https://blog.csdn.net/zxw136511485/article/details/79460671