私はsftp用のchrootを設定し、チュートリアルの組み合わせを使用しました(ソース1、ソース2)次の構成で終了します/etc/ssh/sshd_config
。
Match Group sftpusers
ForceCommand internal-sftp
ChrootDirectory /var/sftp/
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
sftpデフォルトフォルダ/var/sftp
とユーザーは次のように作成されます。
groupadd sftpusers
adduser myuser01
mkdir -p /var/sftp/myuser01
usermod -a -G sftpusers myuser01
chown myuser01:myuser01 /var/sftp/myuser01
systemctl restart sshd
/var/sftp
ログインしようとすると、ログインの仕組みを示すこのフォルダが表示されます。
ユーザーがそのフォルダにあることを望むので、その行の下/var/sftp/<userid>
に次の設定を設定してみました。sshd_config
Match Group
ChrootDirectory /var/sftp/%u
client_loop: send disconnect: Broken pipe
これにより、ログイン時にエラーが発生します。ssh_config
マニュアルページによると、変数は次のように許可されなければなりません。
ChrootDirectory は %%、%h、%u タグを受け入れます。
どんなアイデアがありますか?
環境:
- オペレーティングシステム:Ubuntu 18.04.4 LTS
- sshd: OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 2017年12月7日
ベストアンサー1
chown myuser01:myuser01 /var/sftp/myuser01
...
ChrootDirectory /var/sftp/%u
OpenSSH SSHサーバーChroot ディレクトリディレクティブでは、chrootディレクトリとその親ディレクトリをルートが所有する必要があります。
Chroot ディレクトリ
認証後にchroot(2)のディレクトリパス名を指定します。セッションの開始時に、sshd(8)は、パス名のすべてのコンポーネントが他のユーザーまたはグループが書き込めないルートが所有するディレクトリであることを確認します。chrootの後、sshd(8)は作業ディレクトリをユーザーのホームディレクトリに変更します。
これはテストしていませんでしたが、考える関連ユーザーの行を含むchroot環境でファイルを生成すると、/etc/passwd
sshdはその行のhomeフィールドをchroot環境内のユーザーのホームディレクトリとして扱います。これが機能したら、それを使用してchrootディレクトリではなく作業ディレクトリからユーザーセッションを開始できます。