Установите для последнего параметра файла /etc/passwd
(в строке пользователя) значение /usr/lib/openssh/sftp-server
(или любого используемого вами сервера sftp). Это сделает так, чтобы оболочкой входа для пользователя был sftp-сервер, и это все, что он может использовать. Для этого требуется меньше настроек, чем для другого ответа, и он подходит точно к сути, хотя опции, разрешающей scp позже, не существует.
Ну, rssh - это ограниченная оболочка, предоставляющая доступ по sftp, но не доступ по ssh.
sudo apt-get install rssh
sudo chsh -s /usr/bin/rssh $username
Возможно, вам придется
sudo bash -c "echo '/usr/bin/rssh' >> /etc/shells"
, чтобы сделать его «действительной» оболочкой.
Обновление 9-13-2012 для Ubuntu 12.04
В файле /etc/rssh.conf прокомментированы различные виды доступа; поэтому для sftp раскомментируйте строку # 10, "#allowsftp".
sudo -e /etc/rssh.conf
Измените
#allowsftp
на
allowsftp
Сохранить.
Иногда полезно установить umask для клиента ftp. Для этого создайте простой скрипт /usr/lib/openssh/sftp-server-go.sh
#!/bin/bash
/usr/lib/openssh/sftp-server -u 0007
и используйте его в /etc/passwd
.