
SFTPアクセスと制限付きSSHアクセスを持つユーザーを設定しようとしています。そのため、ユーザーをchrootし、基本的に指定されたとおりに設定しました。このチュートリアルただし、サーバーに ssh で正常に接続できる一方で、SFTP 接続で接続しようとすると、「接続に失敗しました」というメッセージが表示されるだけです。
研究と修正の試み
私はこれをどうやって行うのか説明できるものを探してみましたが、私が見つけたのはこのトピック答えはありませんでした。さらに、これをどのように実行できるかを示す記事はオンラインでは見つかりませんでした。
また、失敗の原因となるコマンドが不足していないことを確認するために、全体/bin
とフォルダ全体をchrootedディレクトリにコピーしてみました。 を見ても結果は得られませんでした。唯一のログは、 を設定したときを含め、ユーザーによって接続が閉じられたというものでした。WinSCPでSCP接続を使用して接続しようとすると、ファイルを見ることはできますが、ローカルドライブに何もコピーできず、その逆もできません。/lib
/var/log/auth.log
LogLevel 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
。