我在Ubuntu17.10上安装FTP服务器 (vsftpd)
原创 入门小站 入门小站 2022-08-06 22:43 发表于湖北 收录于合集 #Linux478个 #ftp1个1.安装vsftpd
更新可用软件包列表和安装 vsftpd
sudo apt-get update
sudo apt-get install vsftpd
检查vsftpd 的状态
sudo service vsftpd status
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: e
Active: active (running) since Sat 2022-08-06 19:59:12 UTC; 16s ago
Main PID: 31602 (vsftpd)
CGroup: /system.slice/vsftpd.service
└─31602 /usr/sbin/vsftpd /etc/vsftpd.conf
Aug 06 19:59:12 myserver systemd[1]: Starting vsftpd FTP server...
Aug 06 19:59:12 myserver systemd[1]: Started vsftpd FTP server.
上面我们可以看到FTP 服务器现在已经启动并运行。
2.配置防火墙
启用
ufw
防火墙。在启用ufw
防火墙之前,添加SSH
规则。如果你不想设置防火墙,请跳到步骤 3。
sudo ufw allow OpenSSH
为 FTP打开端口 20 和 21,VSFTPD要求打开 40000-50000 端口范围。TLS需要开放端口 990,后面讲开启
TLS
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw allow 990/tcp
启用防火墙
sudo ufw enable
检查防火墙的状态
sudo ufw status
3.创建一个FTP用户
创建一个新用户
ftpuser
。
sudo adduser ftpuser
可能还会要求你输入一些联系信息。你可以一直按
ENTER
默认。
如果你只想
ftpuser
使用 FTP 登录,你可以通过将他们的用户名添加到 SSH 配置文件来禁用他们的 SSH/SFTP 访问。否则,跳到第 4 步。
在 vim 中打开 SSH 配置。
sudo vim /etc/ssh/sshd_config
替换
ftpuser
为你要拒绝 SSH 和 SFTP 访问的用户。你可以在此处添加多个用户,并用一个空格分隔。
vim /etc/ssh/sshd_config
DenyUsers ftpuser
重新启动 SSH 服务。
sudo service sshd restart
4.目录权限
现在需要配置ftp可以访问的目录,假如我们需要
ftpuser
用户可访问的根目录是/var/www/html
,那么就需要设置该目录的权限。
sudo usermod -d /var/www ftpuser
sudo chown ftpuser:ftpuser /var/www/html
5.配置vsftpd
在编辑配置文件之前,创建一个备份。
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
打开配置文件。
sudo vim etc/vsftpd.conf
write_enable=YES //允许写入文件
chroot_local_user=YES //防止用户访问/var/www/html之外的目录
local_umask=022 //为上传的文件和文件设置默认的权限
force_dot_files=YES //显示以点开头的文件
pasv_min_port=40000 //VSFTPD要求打开
pasv_max_port=50000
重启 vsftpd。
sudo systemctl restart vsftpd
6.测试FTP
使用FileZilla测试,它适用于 Windows、Mac 和 Linux。
输入你的服务器 IP、你之前创建的 FTP 用户名和密码,然后点击
Quickconnect
。
如果有错误可以使用tail查看日志。
sudo tail /var/log/vsftpd.log -n 200
7. 使用 TLS 保护 FTP(可选)
FTP协议默认没有加密,凭据和内容是明文发送的,因此很容易被拦截。要解决这个问题,可以使用 FTPS(基于 SSL/TLS 的 FTP)连接到 vsftpd。
使用它
openssl
来创建一个新证书。
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
会让输入一些详细信息,例如国家/地区等。你可以按
ENTER
默认。
私钥已经创建,修改
vsftpd.conf
配置文件开启ssl
sudo vim etc/vsftpd.conf
ssl_enable=NO
将其更改为:
sudo vim etc/vsftpd.conf
ssl_enable=YES
添加以下配置
sudo vim etc/vsftpd.conf
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
pasv_min_port=40000
pasv_max_port=50000
重启 vsftpd。
sudo systemctl restart vsftpd
8. 使用 FileZilla 测试 TLS
输入你的服务器 IP、你之前创建的 FTP 用户名和密码,然后单击
Quickconnect
。
你可能会看到未知证书警告。单击
在以后的会话中始终信任此证书
然后单击确定
。
如果你通过 TLS 连接,它会在连接日志中显示。并且在界面的右下角出现有个小锁的图标。
【Linux常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。
近期热文
Linux中8个访问MySQL或MariaDB数据库的GUI工具
-
suliangliang 来自广东 ubuntu版本有点低哦
入门小站 (作者) 老系统啊,新系统一样的