
似たような質問がいくつかありますが、同じではありません。デフォルトのフォルダーを変更したくありません。そのため、SSH 接続のルート フォルダーを設定したいと思います。つまり、クライアントがアクセスできる唯一のフォルダーは、私が設定したフォルダーです。クライアントだけがアクセスでき、を使用できないパスを設定したいと思いますcd ..
。
アクセス権と許可がないため、上位のフォルダーに移動することはできません。
編集: 私がやりたい最も重要なことは、他のデバイスが書き込みできるローカル サーバーを用意し、すべてのファイルにアクセスできないようにすることです。SSH よりも良い方法があれば教えてください。質問が下手で申し訳ありません。
ありがとう
答え1
ChrootDirectory
該当ユーザー、一部のグループ、またはすべてのユーザーに対して sshd 構成を設定する必要がありますが、これは面倒です。
たとえば、新しいファイルを作成し、/etc/ssh/sshd_config.d/chroot_some_users.conf
次の内容を入力します。
Match User myuser
ChrootDirectory %h
これを複数のユーザーに対して使用する場合は、 を使用してMatch Group groupname
、必要なすべてのユーザーをそのグループに追加します。
Include /etc/ssh/sshd_config.d/*.conf
最近の Linux ディストリビューションでは、 にがあります/etc/ssh/sshd_config
。古いディストリビューションでは、この行を自分で追加する必要がある場合があります。末尾に追加するだけです。すべて実行したら、 で確認しsshd -t
、エラーが報告されない場合は、 で構成を再ロードしても安全ですsystemctl reload sshd.service
。
ユーザーは、myuser
SSH 経由で自分のホーム ディレクトリをファイル システムのルートとして見ることになります。この chroot により、シェル バイナリと必要なライブラリをホーム ディレクトリで利用できるようにしない限り、ユーザーはそれらを表示できないため、SSH 経由でログインできないことに注意してください。ただし、ユーザーは SFTP を使用してファイルを転送したり、TCP ポートを転送したりすることはできます。
man sshd_config
(完全に!)man sshd
多くの重要かつ役立つ詳細を読んでください。