ユーザーを chroot できない

ユーザーを chroot できない

私の ssh サーバーは 4 年間問題なく動作しているので、ユーザーを追加して、特定のフォルダーに chroot したいだけです。

> useradd -m -c /home/thomas -s /bin/sh thomas
> passwd thomas
> chmod 755 /home/thomas
> chown root: /home/thomas
> service ssh restart

これをやると、私はできる接続するsshsftp接続が機能します。問題は、特定のフォルダーに chroot したいことです。

> vim /etc/ssh/sshd_config

ファイルの最後に以下を追加します:

Match user thomas
    ChrootDirectory /home/%u

これを追加するだけなら、何かが変わることはないはずですよね? 構成は同じで、sftp に接続したり使用したりできるはずです... で再起動するとservice ssh restart、sftp に接続できなくなりました。

念のため:

root@xx:/etc/nginx/sites-enabled# /usr/sbin/sshd -v
sshd: illegal option -- v
OpenSSH_6.0p1 Debian-4+deb7u6, OpenSSL 1.0.1t  3 May 2016
usage: sshd [-46DdeiqTt] [-b bits] [-C connection_spec] [-c host_cert_file]
            [-f config_file] [-g login_grace_time] [-h host_key_file]
            [-k key_gen_time] [-o option] [-p port] [-u len]
root@xx:/etc/nginx/sites-enabled#

何が間違っているのでしょうか?

答え1

マニュアルsshd_configにはこう書かれている

ChrootDirectoryには、ユーザーのセッションをサポートするために必要なファイルとディレクトリが含まれている必要があります。対話型セッションの場合、これには少なくともシェル (通常は ) と、、、、、、、デバイスなどの基本ノードが必要です。SFTPを使用しsh(1)/devファイル転送セッションでは、 インプロセス sftp-server が使用されている場合、環境の追加構成は必要ありませんが、ログを使用するセッションでは、一部のオペレーティング システムで chroot ディレクトリ内が必要になる場合があります(詳細については を参照してください)。null(4)zero(4)stdin(4)stdout(4)stderr(4)tty(4)/dev/logsftp-server(8)

ディレクトリを作成しdev/dev/MAKEDEVそこにスクリプトをコピーする必要があります。スクリプトを使用して、必要なデバイス ファイルを作成します。

対話型ユーザーの場合は、必要なバイナリと関連ライブラリも chroot にインストールする必要があります。

「インプロセス sftp サーバー」への参照は、ブロックForceCommand internal-sftp内で使用する必要がりますMatch

注: 古い SSH 実装にはアクセスできないため、抜粋は OpenSSH 7.5 からのものです。

関連情報