chroot ディレクトリで SFTP と SSH の両方を許可する

chroot ディレクトリで SFTP と SSH の両方を許可する

SFTPアクセスと制限付きSSHアクセスを持つユーザーを設定しようとしています。そのため、ユーザーをchrootし、基本的に指定されたとおりに設定しました。このチュートリアルただし、サーバーに ssh で正常に接続できる一方で、SFTP 接続で接続しようとすると、「接続に失敗しました」というメッセージが表示されるだけです。

研究と修正の試み

私はこれをどうやって行うのか説明できるものを探してみましたが、私が見つけたのはこのトピック答えはありませんでした。さらに、これをどのように実行できるかを示す記事はオンラインでは見つかりませんでした。

また、失敗の原因となるコマンドが不足していないことを確認するために、全体/binとフォルダ全体をchrootedディレクトリにコピーしてみました。 を見ても結果は得られませんでした。唯一のログは、 を設定したときを含め、ユーザーによって接続が閉じられたというものでした。WinSCPでSCP接続を使用して接続しようとすると、ファイルを見ることはできますが、ローカルドライブに何もコピーできず、その逆もできません。/lib/var/log/auth.logLogLevel Debug2/etc/ssh/sshd_config

SSHD 設定ファイル (関連セクション):

Match User test_user
    ChrootDirectory /home/test_user

答え1

jailkit最終的に、私が当初試みていた手動による操作ではなく、ユーザーの監禁を自動化するように設計されたツールを見つけました。

chrootディレクトリを設定するには、次の手順を使用しました。

インストール(Ubuntuの場合) ソースからのインストールはここ

sudo apt install jailkit

ディレクトリの設定

アクセスを許可するさまざまなパッケージのリストは、にあります/etc/jailkit/jk_init.ini。私もセットアップ後にこの方法でgitをインストールしました。

sudo chown root:root /srv/test_user
sudo jk_init -v /srv/test_user netutils basicshell jk_lsh openvpn ssh sftp

一般的なフォーマットは以下の通りです

sudo chown root:root <chroot_directory>
sudo jk_init -v <chroot_directory> <packages>

ユーザーを投獄する

sudo jk_jailuser -m -j /srv/test_user test_user

シェルの変更

最後に、 で指定されたシェルをから<chroot_directory>/etc/passwdに変更する必要があります。test_user、root、およびおそらく他のログインのエントリのみが存在することに注意してください。/usr/sbin/jk_lsh/bin/bash

そこから、sshまたはsftp/scp経由でログインし、期待どおりにすべてにアクセスできます。公開鍵でログインするには、ファイルを設定する必要があることに注意してください~/.ssh/authorized_keys

関連情報