金钱(警告)
状态: 被贬值
如果您目前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议升级或迁移到支持的 Ubuntu 版本:
原因: Ubuntu 12.04 已於 2017 年 4 月 28 日到達終止期 (EOL) 並不再收到安全性修補或更新。
相反,请参阅: 此指南可能仍然有用作为参考,但可能不会在其他Ubuntu版本上工作. 如果可用,我们强烈建议使用为您正在使用的Ubuntu版本编写的指南。
介绍
FTP,或文件传输协议,是传输文件在本地和远程服务器之间的一种流行的方式.虽然FTP在过去是传输的偏好方法,但它用简单的文本进行身份验证,使其不安全。
ProFTPd 是一个流行的FTP服务器,可以配置使用SFTP协议,一个安全的FTP替代方案,而不是FTP。
我们将向您展示如何在Ubuntu 12.04 VPS上配置此功能,但大多数发行版应该以类似的方式运行。
安装 ProFTPd
ProFTPd软件位于Ubuntu的默认存储库中,我们可以通过键入来安装:
1sudo apt-get update && sudo apt-get install proftpd
在安装过程中提示时选择单独站立
。
安装后,我们需要编辑一些基本的配置变量. 使用文本编辑器打开具有 root 特权的 ProFTPd 配置文件:
1sudo nano /etc/proftpd/proftpd.conf
更改ServerName
参数以匹配您的域名或IP地址。
1ServerName "yourDomainOrIPAddress"
从DefaultRoot
参数的前面删除#
,以解除评论:
1DefaultRoot ~
保存并关闭文件。
配置 SFTP 访问与 ProFTPd
现在,我们需要配置服务以使用 SFTP。
默认文件在conf.d
子目录中寻找额外的配置,我们将在那里创建一个文件,以允许使用 SFTP:
1sudo nano /etc/proftpd/conf.d/sftp.conf
ProFTPd 可以采用与 Apache 相同的格式配置。如果你熟悉 Apache,这应该看起来很熟悉。
将以下内容复制并粘贴到文件中:
1<IfModule mod_sftp.c>
2
3 SFTPEngine on
4 Port 2222
5 SFTPLog /var/log/proftpd/sftp.log
6
7 # Configure both the RSA and DSA host keys, using the same host key
8 # files that OpenSSH uses.
9 SFTPHostKey /etc/ssh/ssh_host_rsa_key
10 SFTPHostKey /etc/ssh/ssh_host_dsa_key
11
12 SFTPAuthMethods publickey
13
14 SFTPAuthorizedUserKeys file:/etc/proftpd/authorized_keys/%u
15
16 # Enable compression
17 SFTPCompression delayed
18
19</IfModule>
解构 SFTP 配置
让我们把文件分成组件,以便我们更好地理解它。
整个部分被包裹在)。
*SFTPEngine on : 为服务器启用 SFTP 能力 *第2222号港 :指定接受SFTP连接的端口。 由于SSH已经在端口22上寻找连接,我们想要一个不同的端口. *SFTPLog :配置将要创建的日志文件的位置。 *SFTPHostKey :这两行指向SSH主机密钥. 服务器就是这样向客户端识别自己的. 大部分情况下,我们使用的台词应该是正确的. *SFTPAuth方法 : 此行将服务器配置为_只_ 接受与 SSH 密钥的连接 。 *SFTP授权 用户密钥 : 此参数命名了可用于认证某人的 SFTP 密钥的位置 。 "u" 部分将替换正在认证的用户名 。 *SFTP压缩延迟 : 这设定了文件传输过程中将使用的压缩机制. .
配置基于密钥的身份验证
ProFTPd 可以使用 SSH 密钥来验证用户,但必须将密钥转换为使用 RFC4716 格式。
开始创建一个目录来容纳这些文件:
1sudo mkdir /etc/proftpd/authorized_keys
现在,我们需要转换当前用于登录服务器的公共密钥. 如果您只有一个用户,您可以使用以下命令:
sudo ssh-keygen -e -f ~username/.ssh/authorized_keys | sudo tee /etc/proftpd/authorized_keys/username
如果您有多个用户,并且需要将其日志分离为凭证,则必须使用实际的公共密钥而不是授权_keys 文件,如下:
sudo ssh-keygen -e -f /path/to/id_rsa.pub | sudo tee /etc/proftpd/authorized_keys/username_who_owns_key
你可以添加你想要的多少钥匙。
完成后,重新启动 ProFTPd 服务器:
1sudo service proftpd restart
在 SSH 端口中禁用 SFTP 访问
现在我们已经通过ProFTPd启用了SFTP,我们可以在正常的SSH端口禁用它,这将使我们能够配置用户访问并锁定每个用户可以通过ProFTPd看到和操纵的内容,而不必担心人们可以离开他们的家庭目录。
打开 SSHD 配置文件:
1sudo nano /etc/ssh/sshd_config
在文件的底部,你应该看到一个看起来像这样的行:
1Subsystem sftp /usr/lib/openssh/sftp-server
在其前面放一个哈希(# ),以评论该行:
1# Subsystem sftp /usr/lib/openssh/sftp-server
保存并关闭文件。
现在,重新启动 SSH 服务器以启用您的更改:
1sudo service ssh restart
与客户连接
有很多FTP客户端,我们可以用来连接到我们的服务器. 好的客户端也实现SFTP功能. 我们将展示如何通过FileZilla连接,这是在所有主要平台上可用的。
打开 FileZilla 的偏好选项,在左侧菜单中找到SFTP
部分。
点击添加 keyfile
,然后导航到您的私钥的位置. 通常,这将是在 ~/.ssh/id_rsa
. 您可能会收到一个消息说 FileZilla 将其转换为受支持的格式。
点击OK
以退出偏好。
在主界面中,键入sftp://
,然后在主机
字段中键入您的服务器的域名或IP地址,将您的用户名放入用户名
字段,然后填写您选择的端口
字段的端口:
点击快速连接
,FileZilla 将使用您的 SSH 密钥自动连接。
结论
您的服务器现在应该配置为接受由 ProFTPd 管理的 SFTP 连接。您可以配置软件来管理用户以及哪些区域受到限制。