LoginSignup
7
8

More than 5 years have passed since last update.

sftpでchrootの設定をする。

Posted at

はじめに

AmazonLinux2にsftpユーザーにchrootを設定する手順をまとめました。

事前準備

設定する前の事前準備です。

ユーザー作成

まず、sftpuserという名前でユーザーを作成します。

ユーザー作成
$ sudo useradd sftpuser
$ sudo passwd sftpuser

ディレクトリの作成

次にchroot用のディレクトリを作成します。

$ sudo mkdir /opt/chroot
$ sudo chown root.root /opt/chroot
$ sudo mkdir /opt/sftpuser
$ sudo chown sftpuser /opt/sftpuser/data
$ sudo chmod 755 /opt/sftpuser/data

chroot先のディレクトリの所有者はrootにする必要があります。
そのためファイルのアップロード用に配下にディレクトリを作成しています。

設定

準備ができたので設定を行います。

config修正

既存のconfigのバックアップを取り、修正します。

$ sudo cp -pi /etc/ssh/sshd_confg /etc/ssh/sshd_config.bk
$ sudo vim /etc/ssh/sshd_config

Subsystem sftp /usr/libexec/openssh/sftp-serverの行があればコメントアウトをし、以下の内容を追加します。

追加
Subsystem sftp  internal-sftp
Match User sftpuser
    ChrootDirectory /opt/sftpuser
    X11Forwarding no
    AllowTcpForwarding no
    PasswordAuthentication yes
    ForceCommand internal-sftp
パラメータ 内容
ChrootDirectory chrootを行うディレクトリパス
X11Forwarding X11転送許可設定
AllowTcpForwarding TCP転送許可設定
PasswordAuthentication パスワード認証を行うか
ForceCommand 強制コマンド設定

ユーザー単位でなくグループ単位にしたい場合はUserGroupにします。

sshd再起動

設定したら再起動します。

$ sudo systemctl restart sshd.service
$ sudo systemctl status sshd.service

確認

それではsftpコマンドを使って実際にファイルのアップロードができるか試してみます。

$ touch test
$ sftp sftpuser@localhost
sftp> cd data
sftp> put test
sftp> ls
sftp> rm test
sftp> ls
sftp> quit

ファイルのアップロードが確認できました。

おわりに

rootでないとchrootできないにも関わらず、root権限がないのでファイルアップロードができないなんてなんか腑に落ちないです。。。

参考
https://euske.github.io/openssh-jman/sshd_config.html

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8