昔我往矣

sftp配置chroot

2014年11月3日

有时候搭建一个FTP是很麻烦的事情,还有权限管理和用户配置等,在要求不高的情况下Linux自带的sftp可以更好更方便的完成ftp的工作。另外,FTP密码是明文传输的,存在一定的安全隐患,而使用ssh协议22号端口的sftp就没有这个问题!

环境:

系统:CentOS 6.5
ssh版本:OpenSSH_5.3p1

sftp配置和chroot
sftp的chroot功能需要ssh的版本高于4.8p1,如果版本不到,需要先升级ssh版本。
正常的ssh用户可以使用sftp,但是他们可以访问整个系统,而chroot的功能就是把sftp用户限制在用户的家目录里,对sftp登陆的用户来说,家目录就是根目录!

1 配置sshd_config
打开/etc/ssh/sshd_config,注释掉如下行:

Subsystem   sftp    /usr/libexec/openssh/sftp-server

对用户组来说,添加如下行:

Subsystem       sftp    internal-sftp  
 Match Group sftpusers
   ChrootDirectory /home/%u
   ForceCommand internal-sftp
   AllowTcpForwarding no
   X11Forwarding no

意思是所有sftpusers组里面的用户都启用sftp。
对单个用户来说,添加如下几行:

Subsystem       sftp    internal-sftp  
Match User sftpuser
ChrootDirectory /home/%u
ForceCommand internal-sftp

意思是对sftpuser用户启用!以上两种方式选一个即可,建议按组匹配!修改完成,重载sshd服务配置文件

service sshd reload

2 建立用户组和用户

groupadd sftpusers
useradd -g sftpusers -s /sbin/nologin -d /home/user1 user1
chown root:sftpusers /home/user1
chmod 755 /home/user1
passwd user1

3 权限注意

  • chroot的目录所属用户必须是root,权限是755,本例中是/home/user1,由于user1和user1所属的组sftpusers都对/home/user1没有写权限,所以需要root用户在/home/user1目录下建立子目录,并对user1用户赋予权限,这样user1就能登陆服务器并进行写操作了!
  • 由于强制使用sftp,所以是不能使用ssh登陆系统的
  • 同样可以使用公私钥认证的方法实现免密码登陆sftp

4 客户端

$ sftp nuoan@192.168.1.1 
Connected to 192.168.1.1.
sftp> 

参考链接
https://wiki.archlinux.org/index.php/SFTP_chroot

当前暂无评论 »

添加新评论 »