Как лучше организовать sftp доступ к веб-серверу?
Предположу, что используется PHP. Устанавливаем php-fpm и запускаем его его от требуемого пользователя. Это же юзеру даем и ssh. Как php-fpm так и ssh можно за-chroot-ить.

Можно и для apache делать рабочие процессы для каждого сайта из под своего юзера запускать. Но данный веб сервер очень давно не использую, деталей уже не припомню, но все есть в оф. документации.

Если сайт вообще один единственный (как-то на vps-е), то "пользователя apache: добавить ему пароль и shell и заходить под ним".
Настроить sftp из под proftpd. https://www.digitalocean.com/community/tutorials/h...https://www.digitalocean.com/community/tutorials/h...
В процессе настройки:DefaultRoot ~
Добавить нового пользователя в :apache с /bin/bash.
Если не соединяется то в конфиге proftpd проверить и добавить/закоментить:UseFtpUsers off
# Set the user and group that the server normally runs at.
#User                           proftpd
#Group                          nogroup
Иначе смотреть в сторону selinux.