Ubuntu Server 22.04 SSH ChrootDirectory が SFTP 経由でアクセスすると期待どおりに動作しない

Ubuntu Server 22.04 SSH ChrootDirectory が SFTP 経由でアクセスすると期待どおりに動作しない

通常、 経由で正常にログインしてコマンドsftpを実行すると、putログインしたユーザーのディレクトリにファイルが転送されるはずです。 これはすぐに機能しますが、ユーザーを自分のディレクトリに$HOME制限したいと思います(たとえば、それ以上のレベルには移動できないようにします)。sftp$HOMEcd

これは私が使用しているところですChrootDirectory- ドキュメントによると(参考:

ChrootDirectory: 認証後にchroot(2)するパスを指定します。このパスとそのすべてのコンポーネントは、他のユーザーやグループが書き込みできないルート所有のディレクトリである必要があります。

フォルダー/権限は正しく設定されていると思います。ドキュメントの次の文は機能していないか、期待どおりに動作していないと思います。

chroot後、sshd(8)は作業ディレクトリをユーザーのホームディレクトリに変更します。

sshd_configを使用するように変更しChrootDirectory、ユーザーの作業ディレクトリ経由でサーバーに正常にアクセスするとsftp、ユーザーの $HOME ディレクトリに設定されず、実際には 1 つ上のレベルに設定されます。(例:/homeの代わりに/home/userTest) ユーザーにとって明らかな修正方法は、1 つ下の正しいディレクトリに cd することですが、現在の作業ディレクトリにデータを FTP するだけの自動化システムを使用している場合、これは非常に問題になる可能性があります。

まず一般的なケースを示し、次にそれを修正して、デフォルトの作業ディレクトリの動作がどのように変化するかを示しますChrootDirectorysshd_config

これは期待どおりに動作します:

  1. ユーザーを作成します (-mこのユーザーのホーム ディレクトリを作成するために使用します):sudo useradd -m userTest
  2. ユーザーにパスワードを付与します:sudo passwd userTest
  3. userTest$HOMEディレクトリに 注意してください: cat /etc/passwd->userTest:x:1002:1004::/home/userTest:/bin/sh
  4. 作成したユーザーのサーバーに sftp で接続します。sftp userTest@<your-server>
  5. ログインに成功した後の作業ディレクトリをメモします: pwd->Remote working directory: /home/userTest

上記の例は期待どおりに動作していますが、唯一の問題はuserTest作業ディレクトリにロックされておらず、cd ..ファイル システムがリセットされる可能性があることです。

いくつかのガイドでは、この問題に対する基本的な解決策がすべて同じでした(https://linuxconfig.org/how-to-setup-sftp-server-on-ubuntu-20-04-focal-fossa-linux

前の手順に追加

  1. Matchsftp グループを追加します (これはのブロックのキーとして使用されますsshd_config)。sudo addgroup sftp
  2. userTestユーザーをグループに追加:sudo usermod -a -G sftp userTest
  3. 編集sshd_configsudo nano /etc/ssh/sshd_config
  4. ファイルの末尾に次の行を追加します
Match group sftp
ChrootDirectory /home
ForceCommand internal-sftp

(これは基本的に、グループに属するすべてのユーザーがおよびルールsftpの対象となることを意味します)ChrootDirectoryForceCommand

ファイルを保存して ssh を再起動します。 sudo systemctl restart ssh

指定されたディレクトリがChrootDirectory上記のドキュメントの要件を満たしていることを確認します: ls -ltr-> drwxr-xr-x 4 root root 4096 Jun 10 09:02 home(これで合格すると思います)

すぐに使えるセットアップの結果と、userTest再度使用して新しい sftp 構成の結果を比較します。sftp userTest@<your-server>

現在の作業ディレクトリに注意してください: pwd->Remote working directory: /

これは何かが間違っているという決定的な証拠ではありません。作業ディレクトリが変更されることが予想されます...ただし、現在の作業ディレクトリの内容を簡単に確認してみましょう。

ls -ltr-> drwxr-x--- 3 1002 1004 4096 Jun 10 09:10 userTest(!!!)

ドキュメントによると:

chroot後、sshd(8)は作業ディレクトリをユーザーのホームディレクトリに変更します。

ls -ltr作業ディレクトリがuserTestホームディレクトリ内になく、実際には 1 つ上のレベルにあることがわかります。

これを期待どおりに動作させるための設定方法ChrootDirectoryまたはその他の方法はありますか?

注: ForceCommandsshd_config から削除すると、実際には 11 年前に ERRATA としてクローズされた別の問題が発生しますか? バグ報告

関連情報