大多数 WordPress 共享虚拟主机都支持 FTP,可以让我们通过 FTP 上传管理 WordPress 站点。我们知道,FTP 协议是一个非加密的协议,通过 FTP 发送的数据都赤裸裸的以明文的方式在网络上传来传去,包括 FTP 的用户名和密码,这很不安全。
而 FTP 又是如此的方便高效,让大家舍弃 FTP 显然是不可能的,于是就有 FTP over SSL/TLS,在 FTP 协议的基础上,加上了加密的,处理,让通过 FTP 传输的数据变成了加密后的数据,这样我们就不用再担心在网络上使用 FTP 时,被人截获数据了。
今天我们就以较为流行的,也是我们常用的 FTP 服务端 Pure-FTPd 为例,说明以下怎么实现 FTP over TLS 的。
第一步:为 Pure-FTPd 开启 TLS 支持
在服务器上编辑 /usr/local/pureftpd/etc/pure-ftpd.conf
文件,找到 TLS 一行,把这一行的值,设置为 1 或 2。
- 1:同时支持非安全的 FTP 和 FTP over TLS
- 2:只支持 FTP over TSL
为了确保安全,建议设置为 2,支持以安全方式连接 FTP 服务器。
第二步:为 Pure-FTPd 创建 TLS 密钥
在服务器上执行如下命令:
openssl req -x509 -nodes -days 7200 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
命令会要求我们填写一些信息,这些信息是 TLS 证书的信息,供用户查看证书来源使用,按照要求如实填写就可以了。
填写完成后,我们需要修改一下 TLS 证书的属性,才能让证书生效。执行下面的命令修改即可。
chmod 600 /etc/ssl/private/pure-ftpd.pem
为什么需要 600 权限而不是其他,请参考本站的文章关于服务器目录权限的文章。
证书权限设置好之后,我们需要重启 Pure-FTPd 服务器才能让设置生效。
service pure-ftpd restart
最后,设置 FTP 客户端通过显示加密方式连接
下面的截图是 Mac 的 Transimit 客户端的设置界面,其他 FTP 客户端的设置界面类似。
设置好服务器信息连接服务器时,FTP 客户端可能会提示我们无法确认服务器,这是因为我们的证书是自己生成的,没有受到受信任的证书机构的签名。因为我们是连接自己的服务器用的,并不需要他们的签名,也不影响使用,点击「Continue」继续即可。
如果不放心,可以点击「Show Certificate」查看证书,在证书中,我们可以看到我们第一步填写的证书信息,只要信息正确,就说明这个证书是我们自己的,可以信任。
除了 FTP over SSL/TLS ,如果服务器支持 SSH,我们还可以使用 SFTP 来连接服务器,SFTP 是 SSH 的 FTP 协议,因为 SSH 是加密的,所以使用这种方式连接服务器,我们不用担心信息泄漏。
道路千万条,安全第一条,只有时刻把安全放在心中,才能确保服务器安全。