Для решения этой задачи, нужно запретить пользователю или пользователям использовать ssh, оставив только sftp и настроить каталог в который будет попадать пользователь при подключении по sftp так, что бы он не смог из него выбраться.
В своё время тоже озадачился этой настройкой, перерыл пол интернета и составил для себя памятку.
Инструкция вполне рабочая так-как на старой работе был настроен сервер на данные ограничения.
Этот сервер и по сей день работает.
Привожу, как руководство к действию, кусок моей памятки по работе с ssh без каких либо изменений.
Там несколько вариантов настройки, запрет группе, запрет всем кроме включённых в группу ну и.т.д.
Разобраться думаю не сложно будет.
Выберите тот путь который нужен.
Запрет группе использовать ssh:
Создаём группу например:
groupadd no-ssh
Добавляем пользователя в группу:
usermod –G no-ssh username
Вписываем в секцию: # Allow client to pass locale environment variables файла
/etc/ssh/sshd_config
запрет
DenyGroups no-ssh
Перегружаем sshd
/etc/init.d/ssh restart
Разрешить использовать ssh только пользователям включённым в группу ssh-y
Запрещаем использовать ssh всем пользоватялям не включённым в группу ssh-y.
Вписываем в секцию: # Allow client to pass locale environment variables файла:
/etc/ssh/sshd_config
разрешение
AllowGroups ssh-y
Перегружаем sshd
/etc/init.d/ssh restart
Настройка доступа chroot:
Для настройки устанавливаем сервер openssh-server
Владельцем и группой корневого chroot каталога должен быть root
Права на chroot каталог должны быть 755
Пользователь:
Match User usermaster
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
PermitTunnel no
X11Forwarding no
Группа:
Добавляем группу например sftpchroot
Добавляем пользователя в группу
Назначаем права chroot для группы
Match Group sftpchroot
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
PermitTunnel no
X11Forwarding no