Um die ChrootDirectory-Funktionalität auf Benutzerbasis zuzulassen, verwenden Sie eine bedingt ausgeführte sshd-Konfiguration (unter Verwendung der Datei „Match ” Schlüsselwort) in der sshd_config Datei. Wenn Sie ChrootDirectory auf eine bestimmte Gruppe setzen, stellen Sie sicher, dass die Benutzer dieser Gruppe ihr Home-Verzeichnis nicht verlassen können, wodurch wiederum sichergestellt wird, dass keine anderen Benutzer betroffen sind.
1. Erstellen Sie eine Gruppe für Benutzer, die chrooted werden sollen.
# groupadd sftp_group
2. Erstellen Sie einen Benutzer für die SFTP-Gruppe und legen Sie das Passwort fest.
# useradd sftp_test1
# passwd sftp_test1 Changing password for user sftp_test1. New password: Retype new password: passwd: all authentication tokens updated successfully.
3. Fügen Sie den Benutzer sftp_test1 zur Gruppe sftp_group hinzu. Lassen Sie die Benutzer-Shell /bin/false sein da den Benutzern nur sftp erlaubt sein sollte und nicht 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)HINWEIS :Benutzer, die nicht in dieser Gruppe sind, können sich weiterhin über ssh beim Host anmelden und ansonsten normal mit openssh interagieren.
4. Bearbeiten Sie die sshd-Konfiguration, um sftp zu konfigurieren. Entfernen Sie den /usr/libexec/openssh/sftp-server Zeile und fügen Sie die internal-sftp-Zeile wie unten gezeigt hinzu:
Entfernen oder hashen Sie die Zeile:
# vi /etc/ssh/sshd_config Subsystem sftp /usr/libexec/openssh/sftp-server
fügen Sie die folgende Zeile hinzu:
# vi /etc/ssh/sshd_config Subsystem sftp internal-sftp
5. Fügen Sie den folgenden Inhalt am Ende der Datei /etc/ssh/sshd_config hinzu So fügen Sie die sftp-Chroot-Umgebung hinzu:
# vi /etc/ssh/sshd_config Match Group sftp_group X11Forwarding no AllowTcpForwarding no ChrootDirectory /home ForceCommand internal-sftp
5. Starten Sie den sshd-Dienst neu, um die sftp-Konfiguration zu übernehmen.
# systemctl restart sshd
Bestätigen
1. Versuchen Sie nun, von anderen Clients aus mit dem SSH- und SFTP-Dienst auf das System zuzugreifen:
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.
Wie Sie oben sehen, ist die Verbindung geschlossen und es ist nicht erlaubt, sich über SSH anzumelden.
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>
Als Ergebnis ist der obige sftp_test1-Benutzer über SFTP angemeldet und kann das Verzeichnis aufgrund der Chroot-Umgebung nicht ändern
3. Sie können die SFTP-Server-Funktion auch vom Windows-Client aus testen, indem Sie die Software „WinSCP“ oder „Filezilla“ verwenden.