実現したいこと
Windows環境のサーバーで、AサーバーにOpenSSHサーバーをインストールして、同サーバーに鍵認証でSFTP接続した際、ルートディレクトリがBサーバーのディレクトリとなるようにしたい。
発生している問題・分からないこと
Aサーバーにあるコンフィグファイル「sshd_config」において、「ChrootDirectory 」にルートディレクトリとしたいパスを記載することで、SFTP接続後のルートディレクトリは指定できることは把握済みで、Aサーバーにある実ディレクトリを「ChrootDirectory 」に指定したうえで、鍵認証接続すると問題なくSFTP接続およびファイルの送受信できることは確認済みなのですが、ルートディレクトリをBサーバーの実ディレクトリとしたい場合の対応方法が不明です。
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
ルートディレクトリとしたいBサーバーの対象ディレクトリに対して、Aサーバーでシンボリックリンク作成したりマウントして、コンフィグファイル「sshd_config」に以下のような設定を行いました。
Match User (SFTP接続ユーザー名) ChrootDirectory (Aサーバーで作成したシンボリックリンクやマウントしたパス) ForceCommand internal-sftp
シンボリックリンクの場合、以下のようなメッセージが表示されてSFTP接続できず、
client_loop: send disconnect: Connection reset
Connection closed
またログを確認すると、
fatal: safely_chroot: stat("(Aサーバーに作成したシンボリックリンクパス)"): Permission denied
と出力されていました。
マウントした場合もシンボリックリンク時と同様のエラーメッセージが出力されてSFTP接続できず、ログには、
fatal: safely_chroot: stat("(Aサーバーでマウントしたパス)"): No such file or directory
と出力されていました。
尚、Aサーバーから見たBサーバーの実ディレクトリのネットワークパスを、「ChrootDirectory」に直接指定してみましたが、結果はマウントした場合と全く同じ(エラーメッセージやログ)でした。
補足
シンボリックリンクの方は権限エラーとなっていましたが、接続するSFTPユーザーに対してフルコントロールが割り当てられていることを確認済みです。
マウントの方は、そのようなパスがないとのことですが、エクスプローラー経由で正しくパスが存在していることを確認済みです。
あなたの回答
tips
プレビュー