sshログインを禁止、sftpのみを許可してhome以上の階層に遷移させない設定

昔は、sshftpをそれぞれ設定してサーバ管理者はsshログイン、コンテンツ更新者はftpログイン(chroot)という構成をしていました。
最近のsshdは、sftp + chrootという設定が可能なのでよくやってます。いつも設定方法を忘れるのでここにメモ。
ただ、古いSSHDだとこれが出来ないので注意してください。私はSSHD5.3でやってます。
古いSSHDしか入ってなくて、入れ替えが怖い場合は、別途SSHDコンパイルして別ポートで立ち上げれば共存できます(./configure --prefix=/usr/local/sshd --with-pam ; make ; sudo make installみたいな感じでインストールする)


ゴールは、sshでシェルにログインさせず、sftpのみでhome以上に遷移させないユーザを作る」です。

今回は特定グループに属しているユーザのみ上記の制限をかけます。それ以外のユーザは通常のsshでログインできます。

ユーザ、グループ作成

useradd hoge
groupadd sftponly
gpasswd -a hoge sftponly

これで、 id hoge とやればhogeがsftponlyグループに属している表示がでると思います。

対象ユーザのhomeディレクトリの権限を変更

chown root.sftponly /home/hoge

sshd設定変更

#Subsystem    sftp    /usr/local/sshd/libexec/sftp-server
Subsystem     sftp    internal-sftp

Match Group sftponly
      ChrootDirectory /home/%u
      PasswordAuthentication yes

internal-sftpを利用し、sftponlyグループにマッチしたらchroot制約をかけます。
sftpユーザのみパスワード認証を許したいのであれば、PasswordAuthenticationをyesにします。