由于身边设备包含种类过多,有Windows、Ubuntu、Android、iOS,有时候想要在四台设备间同步ppt,pdf,或者在Windows和Ubuntu上切换编译环境时用u盘拷贝文件步骤过于繁琐,且现有的一台服务器还没能充分利用资源,便萌生了在vps上再搭建一个ftp服务器的想法。
我对于ftp服务器的要求就是:有一定安全性,禁止匿名访问,尽量走加密通道传输,使用账户密码登录
然而百度上的教程经过我的测试大都不靠谱,于是自己Google摸索了一晚,找到了适合自己的搭建ftp的方法,在此分享并作为自己的备份。

1、 安装vsftpd软件

流行的FTP服务器端软件有:PureFTP,vsftpd,ProFTPD。考虑到租的服务器性能不高,我采用了轻量并且坑少的vsftpd。

sudo apt update
sudo apt install vsftpd

安装完成后,需要配置/etc/vsftpd.conf文件内的一些设置

取消下列行首的#注释

write_enable=YES(允许用户在ftp中的写入操作)
local_umask=022(为用户增加相应的读写权限)
chroot_local_user=yes(阻止访问除了用户文件夹意外的文件夹)

在文件末尾添加下列语句开启被动模式(PASV)

allow_writeable_chroot=YES
pasv_enable-YES
pasv_min_port=40000
pasv_max_port=40100

之后保存退出编辑文件,重启vsftpd服务。 service vsftpd restart

这时,ftp服务器就可以使用了,但是在21端口使用ftp登录是非常危险的,即使使用了账户密码,但传输文件很容易会被劫持,因此我在Google之后选择使用更为安全的sftp。

2、安装配置sftp

sftp使用的是ssh文件传输协议,需要安装openssh-ser商业转载请联系作者获得授权,非商业转载请注明出处。ver,一般的vps服务器都预先安装过。安装过就可以跳过这一步。

安装完成之后我们需要为ftp新建一个用户。为了以后可能会添加用户,这里就创建一个ftpaccess用户组。

sudo groupadd ftpaccess

然后在/etc/ssh/sshd_config中修改一些参数

找到 PasswordAuthentication 参数,设置为yes

注释掉 Subsystem sftp /usr/lib/openssh/sftp-server

在文件最后添加下列语句:

Subsystem sftp internal-sftp
Match group ftpaccess
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

之后重启ssh服务 service ssh restart

下面开始创建ftpaccess用户组中的用户

sudo useradd -m xiaofangdyd -g ftpaccess -s /usr/bin/nologin
sudo passwd xiaofangdyd
sudo chown root /home/xiaofangdyd

将nologin脚本加入开机自动执行计划

sudo vim /etc/shells
在最后添加如下行:
/usr/bin/nologin
mkdir /home/xiaofangdyd/share
sudo chown xiaofangdyd:ftpaccess /home/xiaofangdyd/share

现在就可以通过sftp协议向share文件夹上传下载文件了

在Windows和Linux操作端,推荐使用filezilla客户端版(filezilla Client)对ftp服务器进行访问。因为首先fz提供了对sftp登录的支持,最重要的是,由商业转载请联系作者获得授权,非商业转载请注明出处。于简体中文版的Windows系统因为国家规定使用的是GBK字符编码,在ubuntu服务器以及linux上,默认使用的是utf-8全球通用编码,编码不同会导致中文文件名乱码。因此需要在fz中开启强制使用utf-8编码,才能保证文件之间的稳定传输。在iOS上,我使用的是FtpManager,同样使用sftp登录,强制使用utf-8字符编码。在Android上,我使用的是AndFTP,设置同上。

文章出处:在vps上搭建ftp服务器

最后修改日期: 2022年3月31日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。