如何彻底关闭ProFTPd的FTP服务,仅启用SFTP并让FTP连接被拒绝?
如何让ProFTPd仅启用SFTP并彻底禁用FTP服务
嘿,我来帮你搞定这个问题!要让ProFTPd彻底拒绝FTP连接(返回ftp: connect: Connection refused),只保留SFTP服务,光修改DefaultServer肯定不够——核心是要让ProFTPd完全停止监听FTP的默认21端口,同时确保SFTP的配置正常生效。我给你一步步拆解操作:
1. 编辑ProFTPd主配置文件
首先找到你的ProFTPd主配置文件,通常是/etc/proftpd/proftpd.conf或者/etc/proftpd.conf(不同发行版路径可能有差异),用文本编辑器打开它:
sudo nano /etc/proftpd/proftpd.conf
关键修改点:
- 彻底移除/注释FTP监听配置:找到所有涉及
Port 21或者Listen 0.0.0.0:21的行,直接删除或者在行首加#注释掉。这一步是让ProFTPd不再监听FTP的21端口,是实现连接被拒绝的核心。 - 确保SFTP模块已加载并配置正确:检查配置文件开头是否有加载
mod_sftp的指令,如果没有就加上:
然后找到SFTP的配置块(如果没有就手动添加),示例配置如下:LoadModule mod_sftp.c
要是你之前已经有SFTP的配置,确认<IfModule mod_sftp.c> SFTPEngine on SFTPLog /var/log/proftpd/sftp.log # 指定SFTP使用的主机密钥文件(如果没有需要先生成) SFTPHostKey /etc/proftpd/ssh_host_rsa_key SFTPHostKey /etc/proftpd/ssh_host_dsa_key # 可选:设置SFTP监听端口(默认是22,如果你想改可以加这行) # SFTPListen 0.0.0.0:2222 </IfModule>SFTPEngine是on状态就行。
2. 检查所有子配置文件
很多ProFTPd会把细分配置放在/etc/proftpd/conf.d/目录下的子文件里,比如可能有ftp.conf或者其他虚拟主机配置。遍历这些文件,确保没有任何文件还在设置Port 21或者Listen 21,发现的话同样注释/删除。
3. 验证配置并重启服务
修改完所有配置后,先验证配置语法是否正确,避免重启失败:
sudo proftpd -t
如果输出显示Syntax check complete.,就可以重启ProFTPd服务了:
# Systemd系统(比如Ubuntu 16.04+、CentOS 7+) sudo systemctl restart proftpd # SysVinit系统 sudo service proftpd restart
4. 测试效果
现在用FTP客户端测试连接:
ftp your-server-ip
如果看到ftp: connect: Connection refused,说明配置生效了!同时测试SFTP连接:
sftp your-user@your-server-ip
应该能正常建立连接(如果密钥和用户配置没问题的话)。
额外注意点
- 要是你的服务器防火墙之前开放了21端口,虽然ProFTPd不监听的话连接也会被拒绝,但如果想彻底清理,可以移除防火墙的21端口开放规则,比如用
ufw delete allow 21(Ubuntu)或者firewall-cmd --remove-port=21/tcp --permanent(CentOS),然后重载防火墙。 - 如果你还没生成SFTP的主机密钥,可以用下面的命令生成:
sudo ssh-keygen -t rsa -f /etc/proftpd/ssh_host_rsa_key sudo ssh-keygen -t dsa -f /etc/proftpd/ssh_host_dsa_key sudo chmod 600 /etc/proftpd/ssh_host_*_key
内容的提问来源于stack exchange,提问作者bertfred
相关产品推荐
相关产品推荐

