linux - 使用 SSL 配置 VSFTPd 以正确使用 phpseclib

标签 linux ssl php-7 phpseclib vsftpd

我有一个采用 ARM64 架构的迷你 Pc Board,Pine64A+。我已经在 Ubuntu Xenial 16.04 上安装了

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

在 Internet 上查看一些指南,我想 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 代码不行。

我在 composer 安装中使用了 phpseclib。我认为该代码工作正常,因为我已经在另一个 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!

有人可以帮助我吗?

最佳答案

听起来您正在尝试通过 SSL 连接到 FTP。这不是SFTP 是什么。 SFTP 是基于 SSH 的 SFTP。这是一个与 FTP 截然不同的协议(protocol)。引用 wikipedia's entry on SFTP :

SFTP is not FTP run over SSH, but rather a new protocol designed from the ground up by the IETF SECSH working group.

关于linux - 使用 SSL 配置 VSFTPd 以正确使用 phpseclib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44868710/

相关文章:

c++ - 项目错误 : Unknown module(s) in QT: qml quick

linux - 如何从 Linux 内核镜像获取 .config?

Linux命令做通配符匹配

mongodb - 需要帮助为 SSL 设置 MongoDB

c++ - SSL是否执行自动重新协商

PHP 可迭代到数组或可遍历

php - 获取laravel trans中local的key

python - 是否可以输出和监视标准输入、标准输出和标准错误以外的流? (Python)

Tomcat 和 SSL 客户端证书

PHP7 : Methods with a scalar type declaration refuse to type juggle NULL values, 即使在弱/强制模式下