ユーザーごとに ChrootDirectory 機能を許可するには、条件付きで実行される sshd 構成を使用します (「Match 」キーワード) sshd_config ファイル。特定のグループに ChrootDirectory を設定すると、そのグループのユーザーがホーム ディレクトリから出られなくなり、他のユーザーが影響を受けることはありません。
1. chroot されるユーザーのグループを作成します。
# groupadd sftp_group
2. SFTP グループのユーザーを作成し、パスワードを設定します。
# useradd sftp_test1
# passwd sftp_test1 Changing password for user sftp_test1. New password: Retype new password: passwd: all authentication tokens updated successfully.
3. sftp_test1 ユーザーを sftp_group グループに追加します。ユーザー シェルを /bin/false にします ユーザーは sftp のみを許可され、ssh/scp は許可されないためです。
# usermod -g sftp_group -s /bin/false sftp_test1
# id sftp_test1 uid=1000(sftp_test1) gid=1001(sftp_test1) groups=1001(sftp_test1),1000(sftp_group)注意 :このグループに属していないユーザーは、引き続き ssh 経由でホストにログインでき、それ以外の場合は通常どおり openssh と対話できます。
4. sshd 構成を編集して、sftp を構成します。 /usr/libexec/openssh/sftp-server を削除します 行を削除し、以下に示すように internal-sftp 行を追加します:
行を削除またはハッシュします:
# vi /etc/ssh/sshd_config Subsystem sftp /usr/libexec/openssh/sftp-server
以下の行を追加:
# vi /etc/ssh/sshd_config Subsystem sftp internal-sftp
5. 以下のコンテンツをファイル /etc/ssh/sshd_config の末尾に追加します。 sftp chroot 環境を追加するには:
# vi /etc/ssh/sshd_config Match Group sftp_group X11Forwarding no AllowTcpForwarding no ChrootDirectory /home ForceCommand internal-sftp
5. sshd サービスを再起動して、sftp 構成を有効にします。
# systemctl restart sshd
確認
1. 次に、他のクライアントから SSH および SFTP サービスを使用してシステムにアクセスしてみます。
a. SSH
# ssh [email protected] The authenticity of host 'x.x.x.x (x.x.x.x)' can't be established. ECDSA key fingerprint is 07:1c:34:30:f4:81:e1:e0:b3:13:30:b8:57:d9:d9:58. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'x.x.x.x' (ECDSA) to the list of known hosts. [email protected]'s password: Could not chdir to home directory /home/sftp_test1: No such file or directory This service allows sftp connections only. Connection to x.x.x.x closed.
上記のように、接続が閉じられ、SSH へのログインが許可されていません。
b. SFTP
# sftp [email protected] [email protected]'s password: Connected to x.x.x.x. sftp> pwd Remote working directory: / sftp> ls sftp_test1 sftp> cd /home Couldn't canonicalize: No such file or directory sftp>
上記の結果、sftp_test1 ユーザーは SFTP 経由でログインし、chroot 環境のためにディレクトリを変更できません
3. 「WinSCP」または「Filezilla」ソフトウェアを使用して、Windows クライアントから SFTP サーバー機能をテストすることもできます。