配置使用SSL加密的vsftpd服务 - sbw Blog

配置使用SSL加密的vsftpd服务

来源: sbw Blog | 浏览: 3174 | 评论: 0 发表时间: 2019-04-03

vsftpd 是 Unix 环境下一款功能强大的 ftp 服务器程序,它是Very Secure FTP Daemon的简写。虽然 ftp 协议已经很古老,不经常使用了,但是在同步大量文件的时候,ftp 还是要比 scp 等文件传输方式来的方便的多。由于默认的 ftp 是明文传输,为了安全,一般要配合 SSL 加密同时使用。



准备证书

先准备好服务器要使用的SSL证书,这里可以参考我之前分享的使用 certbot 一键申请泛域名解析证书这篇文章来申请Let's Encrypt的 SSL 证书。当然,如果你是在家庭里搭建自己的微服务,不要求加密的话也可以省略这个步骤。


编辑配置

编辑/etc/vsftpd.conf并修改以下配置:

一些基本的配置项都是望文生意的,其中有几个比较重要的,可能需要按照情况修改的选项:


chroot_local_user代表在用户登陆后,将他的家目录用作根目录。这样做可以将他的可访问范围直接限定在他自己的家目录中,如果需要允许用户访问其它目录,就设置为NO


pam_service_name这个选项是指代在进行认证时,使用的认证模块名字。不同的系统环境可能不一样,可以查看/etc/pam.d/目录下有没有与ftp相关的认证模块。


listen这个选项代表监听IPv4地址,如果需要支持IPv6网络的话,需要设置listen_ipv6=YES来开启对IPv6的监听。但需要注意的是,一个vsftpd实例只能监听一个地址,不能同时开启两个地址。需要分别准备两个配置文件,启动两个服务器实例。


另外,vsftpd除了支持本地用户登陆外,也支持以用户数据库的方式进行认证,不过这篇先介绍这种常用的方式。


经常遇到的问题

服务启动失败:一般是配置文件中有错误,查看日志应该能看到INVALIDARGUMENT或者unrecognised variable错误。SSL 证书文件错误也可能报这个问题,要检查两个证书的路径对不对,公钥和私钥是不是写反了等等。修改后可以执行sudo vsftpd -olisten=NO /etc/vsftpd.conf来测试配置是否有问题,能正常跑起来就说明没问题。


vsftpd530login incorrect: 一般是认证出错,检查pam_service_name是否写对,以及对应的认证模块是否存在。检查所登陆的用户是不是在ftp这个组里面。也可以查看journal中的日志看看认证过程为什么失败。


vsftpd500OOPS: config file not owned by correct user, or not a file: 配置文件的所有者或权限不对,修改所有者为root,权限为644





没有人评论过此文,还不快抢个沙发
  • 昵称: *
  • 邮箱:
  • 网址:
  • 记住我的信息
  • Color
  • Red
  • Blue
  • Code
  • bash
  • cpp
  • css
  • java
  • js
  • perl
  • php
  • python
  • ruby
  • sql
  • xml