vsftpd/focal 3.0.3-12 amd64
lightweight, efficient FTP server written for security.
添加用户
这里以 Ubuntu 20.04 为例
sudo adduser junos
mkdir /home/junos/ftp
chown nobody:nogroup /home/junos/ftp
chmod a-w /home/junos/ftp
mkdir /home/junos/ftp/configs
chown junos:junos /home/junos/ftp/configs
CentOS的方式为:useradd -d /home/junos -g ftp -s /sbin/nologin junos
安装
sudo apt install vsftpd -y
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
/etc/vsftpd.conf 关键配置
listen=YES
#允许用户创建目录
write_enable=YES
#允许本地用户登录,必须启用此选项才能使任何非匿名登录正常工作
local_enable=YES
#指定下默认权限
local_umask=022
#允许客户端查看目录下的信息,文件列表、大小、创建或修改日期等
dirmessage_enable=YES
#采用本地时区
use_localtime=YES
#FTP数据传输默认端口
connect_from_port_20=YES
#打开日志记录
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
#限制用户只能在home主目录下切换,无法通过根目录进入到其他目录
chroot_local_user=YES
#让家目录可写(不设置YES无法上传文件)
allow_writeable_chroot=YES
#设置默认存储目录
user_sub_token=$USER
local_root=/home/$USER/ftp/configs
#允许下面端口通过防火墙,指定动态端口范围,对于开启了防火墙来说很有用,作用于某些客户端采用的passive模式
pasv_min_port=40000
pasv_max_port=50000
#结合hosts.allow和hosts.deny文件允许特定IP连接
tcp_wrappers=YES
#禁止登录的用户列表(默认,设置 userlist_deny=NO 则变为允许登录的用户列表)
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
然后加上允许 FTP 登录的用户,这里是junos
cat <<EOF>/etc/vsftpd.userlist
junos
EOF
防火墙放行端口
sudo ufw allow ssh
sudo ufw allow 20,21/tcp
sudo ufw allow 40000:50000/tcp
启动服务
systemctl start vsftpd
测试
root@user:~# ftp -p localhost
Connected to localhost.
220 Welcome to Switches FTP service.
Name (localhost:root): junos
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,193,164).
150 Here comes the directory listing.
drwxr-xr-x 2 1000 1000 4096 Apr 28 02:15 configs
226 Directory send OK.
ftp>
这里是指定使用
Passive Mode
(服务端分配动态端口),默认是使用pftp(tcp_ftp)的Active Mode
(服务端使用固定的20端口)
如果没有加上allow_writeable_chroot=YES
,会报错:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Juniper 配置
[edit system archival configuration]
archive-sites {
ftp://username<:password>@host-address<:port>/url-path;
scp://username<:password>@host-address<:port>/url-path;
http://username @host-address :url-path <password>;
}
transfer-interval interval;
transfer-on-commit;
我这边是 FTP 的配置,示例:
ftp://junos:dpb3XyG6P@10.10.10.100
配置成功的前提是你的 Juniper 设备首先能 ping 通 FTP 主机IP,或直接尝试在该设备上使用 ftp 命令
有两种触发方式:
- transfer-interval interval
定时备份,interval 范围为 15 至 2880 分钟。
- transfer-on-commit
在每次提交候选配置时将其当前活动配置传输到存档站点。
评论区