我正在尝试在 ubuntu 上设置 vsftpd
我已经安装成功了 vsftpd
我的网络工作原理如下
主机上的 Lan 网络(localhost,127.0.0.1,192.168.1.105)-> 连接到路由器(192.168.1.1(LAN)-> 10.255.1.204(WAN))-> 连接到 ISP(10.255.1.1 -> DNS -> 106.34.26.78(公网 IP))。(注意:使用的 IP 地址仅用于说明,并非真实 IP)
我已经在路由器上启用了端口转发,它会将所有对端口 21 的请求重定向到正在运行 vsftp 守护进程的本地计算机。
我能够从我的内部 LAN 地址和连接到 ISP 的接口(即 10.255.1.204)访问 ftp。但是我无法从我的公共 IP 地址(即 106.34.26.78)访问它,我收到以下消息:
Status: Connecting to 106.34.26.78:21...
Status: Connection established, waiting for welcome message...
Response: 220 (vsFTPd 3.0.2)
Command: AUTH TLS
Error: Connection timed out after 20 seconds of inactivity
Error: Could not connect to server
我的 vsftpd.conf(/etc/vsftpd.conf)
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
local_root=/var/www
chroot_local_user=YES
allow_writeable_chroot=YES
hide_ids=YES
#virutal user settings
user_config_dir=/etc/vsftpd_user_conf
guest_enable=YES
virtual_use_local_privs=YES
pam_service_name=vsftpd
nopriv_user=vsftpd
guest_username=vsftpd
我的 vsftpd(/etc/pam.d/vsftpd)
auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
account required pam_permit.so
我为此苦思冥想了一个月,找到了几篇文章,但它们都与使用公共 IP 访问无关。
编辑
我还在端口 20 上启用了端口转发。
答案1
答案2
我最终通过启用 ssl 并在 vsftpd.conf 中注释几行以允许系统用户而不是使用 pam.d 定义的用户来解决这个问题。
我现在可以访问 sftp(我非常怀疑我的 ISP 是否在 21 上阻止了访问,无论如何它给了我更安全的访问),从外部网络使用以下 /etc/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
local_root=/var/www
chroot_local_user=YES
allow_writeable_chroot=YES
hide_ids=YES
#virutal user settings
user_config_dir=/etc/vsftpd_user_conf
#guest_enable=YES
virtual_use_local_privs=YES
#pam_service_name=vsftpd
#nopriv_user=vsftpd
#guest_username=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
start on (filesystem
and net-device-up IFACE!=lo)
希望它能帮助将来遇到同样问题的人。