Operating system Tested
- Centos 6
- Centos 7
It should work on Fedora and Redhat as well
Problem
- How to set up sftp to chroot only for specific users
- How to set up sftp so that a user can't get out of their home directory, ensuring no other users are affected
- Preserve normal ssh/sftp functionality for most other users
- Support for sftp/scp account jails in openssh server
- I am facing problems for configuring sftp server and need assistance for the same.
Solution
In order to allow ChrootDirectory functionality on a per-user basis, employ a conditionally-executed sshd configuration (using the "Match" keyword) in the sshd_config file.
This example will use a "Match" block based on group membership, but other criteria may used in a "Match" block to determine which users are restricted to the ChrootDirectory (see "man sshd_config" for more details).
If its not root:root, then the below command should be executed for chroot-sftp operation :-
This is most important step before you start, please do not ignore it
# chown root:root /
- Edit sshd_config
- Comment the original Subsystem entry for sftp and replace it with a new entry:
#Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp
- Add the following to the end of the
/etc/ssh/sshd_config
file.
Match Group jailUsers ChrootDirectory /chroots/%u AllowTcpForwarding no ForceCommand internal-sftp X11Forwarding no
- Create a new group to add sftp-only users to (users in this group will not have access to ssh/scp and sftp access will be limited to their chrooted environment.)
# groupadd jailUsers
NOTE: Persons not in this group can still log in to the host via ssh and otherwise interact with openssh normally. - Configure or create the accounts of any sftp-only users. NOTE: the specified home directory is relative to the ChrootDirectory.
# usermod -g jailUsers
-s /bin/false useror#useradd -d /myhome -M -g jailUsers
-s /bin/false userIn case you newly create the "user", set its pasword# passwd user
- Create the user's chroot environment and configure directory permissions. Ensure that this entire path is owned by root and only writable by root.
# mkdir -p /chroots/user ; chmod -R 755 /chroots/user
NOTE: In this case, the chroot directory is set to /chroots/%u (%u is replaced by the username of that user) so that each user will have an individual chroot environment.Users will not be able to see other directories located beneath the root of their chrooted environment. - Create the user's actual home directory under the ChrootDirectory and chown it to the user and group created/used in Step 3 (above).
# mkdir /chroots/user/myhome ; chown user:jailUsers
/chroots/user/myhomeNOTE: The permission of the user chroot directory that is, /chroots/user/myhome should be 0755. - Restart sshd.
No comments:
Post a Comment