如何配置 ProFTPd 以使用 SFTP 而不是 FTP

2024-04-23 11:20

本文主要是介绍如何配置 ProFTPd 以使用 SFTP 而不是 FTP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介


FTP(文件传输协议)是在本地和远程服务器之间传输文件的一种流行方式。虽然过去FTP是首选的传输方法,但它使用明文进行身份验证,因此不安全。

ProFTPd 是一种流行的FTP服务器,可以配置为使用SFTP协议,这是FTP的安全替代方案。本文将向您展示如何配置ProFTPd以使用此协议,以避免FTP的不安全性。

我们将向您展示如何在Ubuntu 12.04 VPS上配置此功能,但大多数发行版应该以类似的方式操作。

安装ProFTPd


ProFTPd软件位于Ubuntu的默认存储库中。我们可以通过输入以下命令来安装它:

sudo apt-get update && sudo apt-get install proftpd

在安装过程中,当提示时选择“独立”选项。

安装完成后,我们需要编辑一些基本配置变量。使用root权限打开ProFTPd配置文件:

sudo nano /etc/proftpd/proftpd.conf

ServerName参数更改为与您的域名或IP地址匹配:

ServerName      "yourDomainOrIPAddress"

取消DefaultRoot参数前的#以取消注释:

DefaultRoot     ~

保存并关闭文件。

配置ProFTPd的SFTP访问


现在,我们需要配置服务以使用SFTP。

默认文件在conf.d子目录中查找附加配置。我们将在那里创建一个文件以启用SFTP的使用:

sudo nano /etc/proftpd/conf.d/sftp.conf

ProFTPd可以使用与Apache相同格式的配置。如果您熟悉Apache,这应该看起来很熟悉。如果您不熟悉,也很容易理解。

将以下内容复制并粘贴到文件中:

<IfModule mod_sftp.c>SFTPEngine onPort 2222SFTPLog /var/log/proftpd/sftp.log# 配置RSA和DSA主机密钥,使用与OpenSSH相同的主机密钥文件。SFTPHostKey /etc/ssh/ssh_host_rsa_keySFTPHostKey /etc/ssh/ssh_host_dsa_keySFTPAuthMethods publickeySFTPAuthorizedUserKeys file:/etc/proftpd/authorized_keys/%u# 启用压缩SFTPCompression delayed</IfModule>

拆解SFTP配置


让我们将文件分解为其组成部分,以便更好地理解它。

整个部分都包裹在IfModule标签中,以确保只有在SFTP模块可用时(它是可用的)才应用配置选项。

  • SFTPEngine on:启用服务器的SFTP功能
  • Port 2222:指定接受SFTP连接的端口。由于SSH已经在端口22上寻找连接,我们需要一个不同的端口。
  • SFTPLog:配置将创建的日志文件的位置。
  • SFTPHostKey:这两行指向SSH主机密钥。这是服务器向客户端标识自己的方式。在大多数情况下,我们使用的行应该是正确的。
  • SFTPAuthMethods:此行配置服务器接受使用SSH密钥的连接。
  • SFTPAuthorizedUserKeys:此参数命名了可用于认证某人的SFTP密钥的位置。%u部分将替换认证用户的名称。
  • SFTPCompression delayed:设置在文件传输期间将使用的压缩机制。

配置基于密钥的认证


ProFTPd可以使用SSH密钥来认证用户,但是密钥必须转换为使用RFC4716格式。幸运的是,SSH套件具有本地转换这些文件的能力。

首先创建一个目录来存放这些文件:

sudo mkdir /etc/proftpd/authorized_keys

现在,我们需要转换当前用于登录服务器的公钥。如果您只有一个用户,可以使用以下命令:

sudo ssh-keygen -e -f ~<span class="highlight">username</span>/.ssh/authorized_keys | sudo tee /etc/proftpd/authorized_keys/<span class="highlight">username</span>

如果您有多个用户并且需要分开他们的登录凭据,您将不得不使用实际的公钥而不是authorized_keys文件,就像这样:

sudo ssh-keygen -e -f <span class="highlight">/path/to/id_rsa.pub</span> | sudo tee /etc/proftpd/authorized_keys/<span class="highlight">username_who_owns_key</span>

您可以添加任意数量的密钥。

完成后,重新启动ProFTPd服务器:

sudo service proftpd restart

在 SSH 端口禁用 SFTP 访问


现在我们已经通过 ProFTPd 启用了 SFTP,我们可以在正常的 SSH 端口上禁用它。这将允许我们配置用户访问并锁定每个用户可以通过 ProFTPd 看到和操作的内容,而不必担心人们能够离开他们的主目录。

打开 SSHD 配置文件:

sudo nano /etc/ssh/sshd_config

在文件底部,你应该看到类似以下的一行:

Subsystem sftp /usr/lib/openssh/sftp-server

在该行前面加上一个井号(#)来注释掉该行:

# Subsystem sftp /usr/lib/openssh/sftp-server

保存并关闭文件。

现在,重新启动 SSH 服务器以启用你的更改:

sudo service ssh restart

使用客户端连接


有很多 FTP 客户端可以用来连接服务器。好的客户端也实现了 SFTP 功能。我们将演示如何通过 FileZilla 连接,它在所有主要平台上都可用。

打开 FileZilla 的首选项。在左侧菜单中找到 “SFTP” 部分。

!FileZilla SFTP 菜单

点击 “Add keyfile”,然后导航到你的私钥的位置。通常,这将在 ~/.ssh/id_rsa。你可能会收到一条消息,说 FileZilla 将把它转换为支持的格式。

按 “Okay” 退出首选项。

在主界面中,在 “Host” 字段中输入 sftp://,后面跟上你的服务器的域名或 IP 地址。将你的用户名放在 “Username” 字段中,并填写你选择的 “Port” 字段的端口号:

!FileZilla SFTP 信息

点击 “Quickconnect”,FileZilla 应该会使用你的 SSH 密钥自动连接。

结论


你的服务器现在应该已经配置为接受由 ProFTPd 管理的 SFTP 连接。你可以配置软件来管理用户和受限区域。总的来说,应该尽量避免使用 FTP,因为它缺乏适当的安全性。

这篇关于如何配置 ProFTPd 以使用 SFTP 而不是 FTP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/928648

相关文章

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

IDEA中配置Tomcat全过程

《IDEA中配置Tomcat全过程》文章介绍了在IDEA中配置Tomcat的六步流程,包括添加服务器、配置部署选项、设置应用服务器及启动,并提及Maven依赖可能因约定大于配置导致问题,需检查依赖版本... 目录第一步第二步第三步第四步第五步第六步总结第一步选择这个方框第二步选择+号,找到Tomca

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Win10安装Maven与环境变量配置过程

《Win10安装Maven与环境变量配置过程》本文介绍Maven的安装与配置方法,涵盖下载、环境变量设置、本地仓库及镜像配置,指导如何在IDEA中正确配置Maven,适用于Java及其他语言项目的构建... 目录Maven 是什么?一、下载二、安装三、配置环境四、验证测试五、配置本地仓库六、配置国内镜像地址

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.