用openssh下的sftp通过chroot控制用户


一、编译安装软件

1、安装zlib
 

  1. # tar zxvf zlib-1.2.5.1.tar.gz  
  2. # cd zlib-1.2.5.1  
  3. # ./configure --prefix=/usr/local/zlib  
  4. # make && make install 

2、安装openssl
 

  1. # tar zxvf openssl-1.0.0g.tar.gz  
  2. # cd openssl-1.0.0g  
  3. # ./config --prefix=/usr/local/ssl  
  4. # make && make install 

3、安装openssh
 

  1. # tar zxvf openssh-5.9p1.tar.gz  
  2. # cd openssh-5.9p1  
  3. # ./configure --prefix=/usr/local/ssh --with-zlib=/usr/local/zlib  --with-ssl-dir=/usr/local/ssl  
  4. # make && make install 

二、创建控制组和登陆用户

  1. # groupadd sftp  
  2. # useradd -g sftp -s /usr/sbin/nologin -d /data/sftp/ sftp 

三、修改openssh服务配置文件

  1. # override default of no subsystems  
  2. #Subsystem      sftp    /usr/local/ssh/libexec/sftp-server  
  3.  
  4. Subsystem      sftp    sftp internal-tftp     
  5. Match Group  sftp                    #限制组  
  6. ChrootDirectory /data/sftp     #限制用户所在根目录  
  7. AllowTcpForwarding no  
  8. ForceCommand internal-sftp  

四、创建限制目录,并添加权限

  1. # mkdir /data/sftp  
  2. # chown root.root /data/sftp   
  3. # mkdir /data/sftp/upload   //创建可以上传的目录  
  4. # chmod 775 /data/sftp/upload  
  5. # mkdir /data/sftp/download //创建可以下载的目录  
  6. # chmod 755 /data/sftp/upload 

五、重启sshd服务

  1. # kill -9 sshd_pid  
  2. # /usr/local/ssh/sbin/sshd 

六、测试sftp上传和下载

$ sftp sftp@192.168.1.115