本文讲解在CentOS系统下实现SFTP CHROOT的几种方法。共有四种方法,第一种是通过MySecureShell实现,第二种是通过OpenSSH的internal-sftp实现,其余两种分别是通过scponly和通过rssh实现,本文介绍前二种方法。
一、通过MySecureShell实现 1.什么是MySecureShell MySecureShell is a sftp-server developing tool which help to make a ftp server like proftpd but very securised with SSH encryption. This software is highly configurable and very easy to install and use. 2.安装MySecureShell 指令yum install mysecureshell安装,如果不行需要配置第三方源,也可以到这里下载安装包安装,或者参考官方安装文档,支持CentOS/RedHat、Debian、Fedora、Ubuntu等系统。 3.配置MySecureShell 运行:$ vi /etc/ssh/sftp_config 主要修改以下几项: LimitConnection 10 #max connection for the server sftp LimitConnectionByUser 1 #max connection for the account LimitConnectionByIP 2 #max connection by ip for the account Home /home/$USER #overrite home of the user but if you want you can use #environment variable (ie: Home /home/$USER) LimitConnectionByUser、LimitConnectionByIP、LimitConnection根据需要可适当调大点,不然可能会现连接不上的现像。Home这项如果建用户时指定了主目录且不在缺省的/home下,可以把这项注释掉或修改为用户主目录所在位置。如果用户主目录在/home下可保持不变。 4.修改用户Shell为MySecureShell $ chsh -s /bin/MySecureShell mike
二、通过OpenSSH的internal-sftp实现 如果要启用OpenSSH自带的的Chroot功能,OpenSSH版本只要在4.8p1以上就可以。 1.检查OpenSSH版本: $ rpm -qa|grep openssh 如果所使用的CentOS比较低可能默认自带的OpenSSH版本过低,这个时候是不需要SFTP CHROOT的,所以需要先把SSH升级到4.8P1版本以上才行。 2.创建用于SFTP的用户 $ useradd -d /home/TempUpload/ -M test2 3.配置sshd_config 运行:$ vi /etc/ssh/sshd_config #注释原本的Subsystem设置 Subsystem sftp /usr/libexec/openssh/sftp-server #启用internal-sftp Subsystem sftp internal-sftp Match User test2 ChrootDirectory /home/TempUpload ForceCommand internal-sftp Match user设定要被chroot的用户,若要设定多个帐号, 帐号间以逗号隔开。例如:Match user userA,userB 如果是群组的则将User改为Group后,再接群组名称。例如:Match Group rootedSFTP ChrootDirectory设定要chroot的位置,可以加上PATTERNS做区隔。如/home/%u,%u表示用户变量,%h为限制到用户的主目录。更多可见:man sshd_config 4.设定Chroo目录权限 $ chown root:root /home/TempUpload $ chmod 755 /home/TempUpload 错误的目录权限设定会导致在log中出现”fatal: bad ownership or modes for chroot directory XXXXXX” 的讯息。 目录的权限设定有两个要点: 1]、由ChrootDirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root 2]、由ChrootDirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限 5.建立SFTP用户登入后可写入的目录 $ mkdir /home/TempUpload/Upload $ chown test2:test2 /home/TempUpload/Upload 6.检查sshd_config內容是否正确 $ sshd -T 7.重新启动sshd $ service sshd restart
三、其它方法 还可通过scponly和rssh实现,这两个的原理和MySecureShell差不多,不过这两个必须先做得做一个CHROOT环境,相对比较麻烦些。
相关主题 |