SSHユーザーはホームディレクトリにどのようにルートを移動しますか?
これはsshd_configファイルで設定したものです:
ChrootDirectory %h
Subsystem sftp /usr/libexec/openssh/sftp-server
SSHバージョンは6.6.1です。
ログインしようとしたときに表示されるエラーは次のとおりです。
Could not chdir to home directory /home/user: No such file or directory
/bin/bash: no such file or directory
答え1
ユーザーを自分のディレクトリにchrootするには、シェルとディレクトリで実行するために必要なすべてが必要です。これはあなたのエラーが言うものです。 Chrootはrootを/home/userに変更し、/home/user/bin/bashで/bin/bash(ユーザーが選択したシェル)を見つけようとしますが、エラーが発生して失敗します。
答え2
最初のエラーメッセージ(「chdir
...できません」)は次のように表示されます。Chroot ディレクトリあなたのsshd_config
。ドキュメントから:
Chroot ディレクトリ
chroot(2)
認証後のディレクトリパス名を指定します。パス名のすべてのコンポーネントは、ルートが所有するディレクトリでなければならず、他のユーザーやグループが書き込めないようにする必要があります。ルートを変更したら、sshd(8)
作業ディレクトリをユーザーのホームディレクトリに変更します。
後ろにchrootを試みると見つかりませんでしたbash
。これは完全なchroot設定がないことに関連しています(ドキュメントを参照chroot(2)
)。
ユーザーの対話コンテキストをchroot
「d」(単純な「d」ではないsftp
)として指定するには、多くのことが必要です。最終目標によっては、単に制限されたシェルを使用したい場合があります(設定方法のアイデアを見つけるには、「restricted」を確認してbash(1)
検索してください)。vim(1)
他の同様の質問への参照が見つかりました。askubuntu.comなど。Archlinux.org(なぜこのディレクトリをルートが所有するのかについては、2番目のディレクトリの一番下までスクロールしてください。)