基于树莓派搭建私有VSFTPD服务器

前言:

FTP作为一项古老的技术,现今已逐渐被云盘技术所取代了,云盘技术区别于FTP技术的最大优势就是文件的自动同步功能,当然,还有云盘技术一般还配备了一个易于使用的手机端的应用,这些是FTP技术无法比拟的。然而,假若你对文件的同步的需求不是很大,只想作一个文件分享或文件中转的服务器,那么FTP服务依然是不错的选择,而事实上,国内很多企业或学校依然还在其内网保留着FTP服务器用于文件分享。FTP技术依然被大量应用,很简单的一点的原因是,简单的需求,就用简单的方式去实现。

本教程将会以树莓派作为基本的硬件设备,之所以使用树莓派,一是此硬件易于获取并且中文信息资源较多,二是作为全天在线并且轻度使用的FTP服务器,我们必须考虑其功耗。树莓派的待机功耗不足3W,对于作为轻度使用的私有FTP服务器,其提供一个月的FTP服务仅需2至3元,可谓非常的环保。事实上,对于仅运行单FTP服务的树莓派,私有使用的话,你可能使用不足5%的CPU资源。题外话,不要尝试将树莓派应用于大并发量的环境,其IO性能并不允许你这么做,实际上,树莓派的IO性能连实现软件阵列都非常有难度。另有一点非常重要,使用私有的FTP服务器,你不需要担心云运营商会可能会获取你的敏感数据!!! 

作为一篇基于VSFTPD程序搭建的FTP服务器,其过程和网上的同类教程基本想同,但本教程将尽量说明一些参数或选项的作用,以方便读者调整配置以实现个性化的FTP服务。另外本教程非常值得关注的一点是,同时实现虚拟用户与本地用户登录使用,这是网上任何一篇教程都无法实现的,至少,在我架设私有FTP服务器,网上并不存在虚拟用户与本地用户同时存在的实现教程。

 一、建站环境

本教程在以下环境下搭建测试通过!

  • 硬件 :树莓派 3 B+

  • 操作系统 :raspbian-stretch-lite

  • VSFTPD版本 :version 3.0.3

  • BerkeleyDB数据库版本 :Berkeley DB 5.3.28

  • 代码测试日期:2019年09月11日

二、操作系统基本安全配置

由于FTP服务将暴露于公网,此处有必要对树莓派上的操作系统作一些必要的安全配置,使用树莓派操作系统的默认配置而将树莓派暴露于公网,这是一个极不明智的做法。当然,如果你只是仅将FTP的端口[20、21]映射出公网,这不会有太大问题,但实际上,你极有可能同时将你的SSH端口影射出公网,以方便你对服务器的管理,此时,操作系统上的默认配置将是非常的危险!

以下的配置并不局限于安全方面,有部分是属于管理上的优化,这是本教程总结的一套基于树莓默认操作系统的基本优化方案,优化内容如下:

三、软件安装

安装VSFTPD程序及BerkeleyDB程序,其中BerkeleyDB程序是为实现虚拟用户登录FTP而需要的,操作命令如下:

四、FTP服务的环境配置

以下命令包括了FTP默认根目录的设备,虚拟用户的宿主用户创建,虚拟用户数据库文件创建、认证模块配置等内容;

五、VSFTPD的配置文件

在配置完成VSFTPD程序的基本环境后,现修改VSFTPD的配置文件,以下为配置文件的内容[可直接复制使用],读者也可按实际需求进行修改,但建议应先按本配置文件,将服务正常运行起来后,再按个性化修改,以方便确认修改后的问题判断。

当配置文件编写完成后,应替换服务器上的原配置文件,并重启VSFTPD服务以应用新配置;

六、识别本地用户

至此,你可以测试VSFTPD服务是否可能正常运行了,你会发现无论是本地用户还是虚拟用户均能正常登录,同时你也会发现,即使你在全局配置文件开启了本地用户的写权限,但在使用本地用户登录时,依然无法上传文件,这是因为全局配置文件中设定了[guest_enable=YES],所以即使实际上是本地用户,但VSFTPD服务进程还是将其实识别为虚拟用户。

要解决这一问题,我们只需要定义并配置登录用户的个性化配置文件即可;方法为:在个性化的配置文件中,禁用虚拟用户功能即可[guest_enable=NO];以下为示例配置方法。

七、提供公网服务

至此,你的FTP服务已经能在内网正常访问了,将其映射出公网还需要一些条件,本教程将讨论无固定公网IP的方法[注:家庭宽带如有公网IP,一般为动态公网IP,另外由于IPV4资源的缺乏,目前大部分国内宽带运营商默认都不会分配公网IP给拨号用户]。首先,需要确定你的家庭宽带拨号能获取到公网IP,然后使用网上免费的DDNS服务实现动态域名解释[如花生壳],再使用路由器上的端口映射服务将FTP端口映射出公网即可。对于DDNS与端口映射功能,普通的家用路由器也配备。关于DDNS与端口映射的使用方法,不在本教程的讨论范围,请参照网上其它教程。

八、结语

最后,本篇《基于树莓派搭建私有VSFTPD服务器》的教程已全部结束。本教程的重点是虚拟用户与本地用户同时共存,现在,你可以将你的虚拟用户分享给你的朋友或同事,方便的文件分享,而不需要担心他们修改你的文件或破坏你的系统,因为他们仅有读权限[下载],而且可访问范围也被严格限制;而你可以使用本地用户登录,你可以做任何你想做的事[上传、下载、新建、切换至真正的根目录],唯一需要的就是,你的本地用户的权限允许。

网友评论3

  1. 沙发
    古逍遙:

    你好.....
    依教程執行後本地用戶可登入,虛擬用戶出現認證失敗如下
    狀態: 正在連線到 192.168.43.219 ...
    回應: fzSftp started
    指令: open "[email protected]" 22
    指令: 信任新的主機金鑰:一次
    指令: Pass: ************
    錯誤: 認證失敗.
    錯誤: 嚴重錯誤
    錯誤: 無法連線到伺服器
    請問是哪裡出錯了?.........麻煩了,謝謝^_^

    2020-04-28 下午9:35 [回复]
    • Edward:

      你好,我没想到这个博客有人在看……代码我当时是测试过没问题的,建议先使用未作任何更改的官方系统直接复制代码[不作任何修改],确认服务能正常运行再按自己的意愿修改[排除代码错误]。你的情况应该是密码错误,注意是否输入了正确的密码。如果确认密码没问题,可以尝试重新生成虚拟用户的用户与密码的数据库文件[“四、FTP服务的环境配置”代码中的24-27命令]。另外,你也可以尝试使用“四、FTP服务的环境配置”代码中的30-42中方式A。另外完全断电设备再重启,很多时候能解决很多不可预期的意外报错。

      2020-05-24 上午12:54 [回复]
    • Edward:

      另外,注意下建立服务时的系统环境,比如操作系统的版本,软件的版本,有时官方更新后会修改一些BUG,或变更一些东西,这都可能影响到原来代码的有效性。这些教程其实随时都可能会过时,建议你了解那些代码到底是做了什么,为什么这么做[有些命令只能运行一次,因为是向原配置文件中插入了新的配置],这样,无论官方如何更新,你都能保证调整少量配置,以保证服务能正常运行。另外,从你创建服务的时间来看,你应该使用了官方更新后的操作系统了[树莓派4],本文未在新系统上测试,但正常情况一般不影响。

      2020-05-24 上午1:08 [回复]

发表评论

表情
还能输入210个字