使用SSL配置VSFTPd以使用phpseclib正常工作

时间:2017-07-02 08:11:20

标签: linux ssl php-7 phpseclib vsftpd

我有一个带有ARM64架构的迷你Pc板,Pine64A +。我在Ubuntu Xenial 16.04上安装了

我想使用VSFTP创建一个带有安全SSL证书的FTP服务。

通过互联网查看一些指南,我想VSFTP工作正常。 这是我的配置:

listen=YES
tcp_wrappers=YES
dirlist_enable=YES
connect_from_port_20=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
#local_umask=022
nopriv_user=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/var/www/$USER
chroot_local_user=YES
hide_ids=YES
guest_username=vsftpd

pasv_enable=YES
pasv_promiscuous=YES
pasv_address=leocric.root.sx
pasv_addr_resolve=YES
pasv_min_port=45000
pasv_max_port=45000

xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES

ssl_enable=YES
#implicit_ssl=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH

ascii_upload_enable=YES
ascii_download_enable=YES

使用以下代码生成SSL证书:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

此时此刻,我认为它运行正常,因为如果我使用FileZilla,我可以在TLS1.2中正确连接 但是我的PHP代码没有。

我使用了phpseclib和composer安装。我认为代码工作正常,因为我已经测试了另一个SFTP服务器。 代码如下:

require __DIR__ . "/vendor/autoload.php";

$sftp = new \phplibsec\Net\SFTP("hostname.tld", 50021);
if(!$sftp->login("user", "pass"))
{
    echo($sftp->isConnected() ? "Login failed!" : "Error establishing connection");
    print_r($sftp->getSFTPErrors());
    die();
}

使用另一台服务器,我还可以上传文件,请求目录列表等等。使用我的VSFTP服务器,我得到了:Error establishing connection

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

听起来你正试图通过SSL连接到FTP。这是 SFTP是什么。 SFTP是基于SSH的SFTP。它是一种与FTP截然不同的协议。引用wikipedia's entry on SFTP

  

SFTP不是通过SSH运行的FTP,而是由IETF SECSH工作组从头开始设计的新协议。