我有一个在 Google Compute Engine 上运行 Ubuntu 16.0.4 LTS 的实例,并且端口 21 已打开。我已在其上安装了 vsftpd,为 FTP 服务添加了一个用户,并将目录权限设置为该用户的完全访问权限。我能够使用命令提示符连接到 FTP 服务器,ftp $IP_ADDRESS
并使用用户名和密码登录。
一旦这样,我就可以根据需要下载和上传文件以及创建和管理目录。但是,如果我尝试使用 Windows 资源管理器访问 FTP 服务器ftp://$IP_ADDRESS
,系统会按预期提示我输入用户名和密码,但当我输入用户名和密码时,服务器会立即重置连接,并且我会收到一条消息,指出:
打开 FTP 服务器上的该文件夹时出错。请确保您有访问该文件夹的权限。详细信息:与服务器的连接已重置。
以下是我的文件内容vsftpd.conf
。如何才能从 Windows 资源管理器访问它?
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=777
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=myftpuser
ftpd_banner=My FTP
ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
答案1
尝试以下设置:
local_umask=077
connect_from_port_20=NO
ascii_download_enable=YES
ascii_upload_enable=YES
nopriv_user=ftpuser
答案2
我知道这个问题很久以前就出现了,我希望你已经解决了这个问题,如果没有,我会尝试添加我所做的事情和对我有用的东西。我希望这能对你有所帮助。
尝试将以下内容添加到您的vsftpd.conf
文件(或您想要的端口)中:
pasv_min_port=40000
pasv_max_port=45000
然后在 GCP 项目 FW 中添加新的防火墙规则
这是添加到实例的标签
之后我就能ftp://$IP_ADDRESS
成功使用。
万一你需要的话,这是我的完整vsftpd.conf
文件:
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
user_sub_token=$USER
local_root=/home/$USER/ftp
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
pasv_min_port=40000
pasv_max_port=45000