Soluzione 1:
 Il comando che dovresti usare per cambiare la shell è chsh . La shell nologin può essere /sbin/nologin o /usr/sbin/nologin (controlla quale hai cercando in /etc/shells ) ma /bin/false sarebbe probabilmente una scelta migliore.
chsh -s /bin/false user
 Dovresti considerare di impostare qualcosa come scponly che farà esattamente quello che vuoi.
Soluzione 2:
Dovresti anche essere in grado di farlo con OpenSSH 4.9 e versioni successive, con cui puoi anche eseguire il chroot dell'utente per una maggiore sicurezza.
 Nel tuo /etc/ssh/sshd_config :
Match User user
ChrootDirectory /home/user
ForceCommand internal-sftp
AllowTcpForwarding no
 Quindi esegui:
chsh -s /bin/false user
chown root:root /home/user
mkdir /home/user/uploads
chown user /home/user/uploads
 L'utente potrà solo scrivere in /home/user/uploads.
https://debian-administration.org/article/590/OpenSSH_SFTP_chroot_with_ChrootDirectory
Soluzione 3:
Penso che il modo migliore sia con mysecureshell
http://mysecureshell.sourceforge.net/en/index.html
Puoi chroot un utente con questo facilmente e persino limitare la larghezza di banda se necessario.