ユーザーにシェル操作を禁止するために /bin/false などをログインシェルに設定するという手段がありますが, SFTP が使いたい場合に利用できません。 sshd_config をいじるというのが正攻法だと思いますが,ここでは手抜きをして専用シェルを作成して用いるという方法を紹介します。
以下のシェルスクリプトを作成して,
#!/bin/sh if [ "$1" = "-c" -a "$2" = "/usr/lib/openssh/sftp-server" ]; then exec /bin/sh "$@" else exec /bin/false fi
要するにログイン時の実行コマンドが sftp-server
であれば,ログインシェルを /bin/sh であるかのように扱うという方法です。
もちろん細かい設定を行いたければ sshd_config をいじるべきですが,単に ssh でシェル操作を禁止したいという場合はこれで十分だと思います。もちろん,最低限このシェルスクリプトが書き換えられない程度のパーミッション設定くらいはするべきでしょう。
ちなみにユーザーシェルの設定は次のコマンドで行います。
sudo usermod -s /path/to/sftp-only-shell restricted-user