共有サーバなどでSSHするユーザが操作できるディレクトリを特定のもののみに制限して、/rootや/etcなどは見られないようにする。
設定手順
お客様に提供するユーザを作成
$ useradd hoge $ passwd hoge
chrootでSSHを使用できるようにするためには、各コマンドの実行ファイル・関連ファイルをホームディレクトリ直下に配置する必要があるので、各種配置する。
$ cd /home/hoge $ cp -p -r /bin /home/hoge/bin $ cp -p -r /lib /home/hoge/lib $ cp -p -r /lib64 /home/hoge/lib64 $ mkdir usr $ cp -p -r /usr/bin /home/hoge/usr/bin $ cp -p -r /usr/lib /home/hoge/usr/lib $ cp -p -r /usr/lib64 /home/hoge/usr/lib64
パーミッションを変更する。 chroot用のディレクトリ/home/hogeはroot:root, 755に変更する。 /home/hoge以下のディレクトリ、ファイルはhoge:hogeに変更する。 注) chrootを使用すると、/home/hoge直下にはユーザはファイルを作成できません。/home/hoge直下にディレクトリを作成すると、そのディレクトリ配下ではファイルを作成可能です。
$ chown root:root /home/hoge $ chmod 755 /home/hoge $ cd /home/hoge $ chown hoge:hoge *
/etc/ssh/sshd_configを編集する。
# SFTP出来るようSubsystemを以下に編集 Subsystem sftp internal-sftp # 末尾に以下を追記 Match User hoge ChrootDirectory /home/hoge X11Forwarding no AllowTcpForwarding no PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
その後、鍵ペアを作成し、公開鍵を/home/hoge/.ssh/authorized_keysにコピーする。 以下でSSHが可能になる。
$ ssh -i <秘密鍵> hoge@<IP>