Странная штука:
При включенном ssl_enable=YES ходят только локальные пользователи на ftp, виртуальные не могут.
При отключенном ssl_enable=NO ходят только виртуальные, локальные не могут
Надо разрешить виртуальным ходить по sftpd
vsftpd.conf (т.к. ssl включен ходят только локальные, что странно):
# Анонимный пользователь разрешен
anonymous_enable=YES
# Разрешил писать для локальных пользователей
local_enable=YES
# Разрешено писать.
write_enable=YES
# Запираем пользователей в виртуальных папках. Верхняя папка не должна иметь права записи: chmod a-w /home/user
chroot_local_user=YES
# Виртуальные пользователи могут использовать такие же привилегии как и локальные пользователи
virtual_use_local_privs=YES
# Установим имя пам сервиса который будет испольвать vsftpd
# По умолчанию используется /etc/pam.d/vsftpd
pam_service_name=ftp
# Активация виртуальных пользователей
guest_enable=YES
guest_username=virtual
# Параметр используется для автоматического создания домашнего каталога
# для каждого виртуального пользователя, на основе шаблона.
user_sub_token=$USER
local_root=/home/ftp/$USER
# Если включено, все о пользователях и группах в каталоге списки будут
# отображаться как «FTP».
hide_ids=YES
# ----- Включаем SSL ----------
#this is important
ssl_enable=YES
#choose what you like, if you accept anon-connections
# you may want to enable this
# allow_anon_ssl=NO
#choose what you like,
# it's a matter of performance i guess
# force_local_data_ssl=NO
#choose what you like
# force_local_logins_ssl=YES
#you should at least enable this if you enable ssl...
# - ssl_tlsv1=YES
#choose what you like
ssl_sslv2=YES
#choose what you like
ssl_sslv3=YES
#give the correct path to your currently generated *.pem file
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
#the *.pem file contains both the key and cert
rsa_private_key_file=/etc/ssl/certs/vsftpd.pem
/etc/pam.d/ftp
auth required pam_userdb.so db=/etc/vsftpd_login crypt=hash
account required pam_userdb.so db=/etc/vsftpd_login crypt=hash
Я так понимаю, чтобы авторизовались и локальные пользоатели в /etc/pam.d/ftp надо что то добавить. А вот, что более важно, что изменить, чтобы по SSL виртуальные пользователи могли ходить - ума не приложу.
Использую Archlinux, если это поможет. Сертификан сгенерирован
# cd /etc/ssl/certs
# openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/certs/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem
# chmod 600 /etc/ssl/certs/vsftpd.pem