Все действия так же будет актуальны для CentOS систем. В данном примере будет добавлен пользователь для доступа через SFTP по SSH ключу в веб директорию под управлениям Apache. Есть дефолтная для Apache группа "apache", при необходимости замените на нужную.
Все сайты живут по пути:
/var/www/html
Добавляем пользователя sftpuser (уже в существующую группу):
useradd -g apache -d /var/www/html -s /sbin/nologin sftpuser
Дадим права группе на запись, так как будем менять владельца:
chmod -R g+w /var/www/html/*
Меняем владельца файлов:
chown -R sftpuser:apache /var/www/html/*
Сама директория "html" не должна принадлежать пользователю "sftpuser"
Создаем директорию для открытых ключей и задаем ей нужные права:
mkdir /var/www/html/.ssh chmod 700 /var/www/html/.ssh
В этой директории создаем два файла и помещаем в них открытый SSH ключ:
authorized_keys id_rsa.pub
Задаем нужные права на файл:
chmod 644 /var/www/html/.ssh/*
Делаем sftpuser пользователя владельцем:
chown -R sftpuser:apache /var/www/html/.ssh
Открываем файл настроек SSH сервера:
vim /etc/ssh/sshd_config
Заменяем строку:
Subsystem sftp /usr/libexec/openssh/sftp-server
На следующую:
Subsystem sftp internal-sftp
И в конец файла добавляем следующий блок:
Match Group apache X11Forwarding no AllowTcpForwarding no ChrootDirectory %h ForceCommand internal-sftp
Перезагружаем службу SSH:
service restart sshd
Подключаемся через SFTP клиент указав имя пользователя "sftpuser" и путь к приватному SSH ключу, на основе которого был сгенерирован открытый, порт для подключения — SSH порт (по умолчанию 22).