CentOS 6配置SFTP

现在的客户还真聪明,知道FTP不安全,非要配置个SFTP,于是便有了本文。其实俺特别想说,身在天朝,还谈啥安全?

由于SFTP是SSH的一部分(与传统的FTP没有任何关系),因此,配置SFTP不需要传统的FTP服务器软件。仅需要OpenSSH服务器即可。

$ yum install openssh-server openssl$ cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak$ vim +132 /etc/ssh/sshd_config 注释掉下面这行Subsystem      sftp    /usr/libexec/openssh/sftp-server添加如下几行Subsystem       sftp    internal-sftpMatch Group sftp        ChrootDirectory /data/sftp/%u        ForceCommand    internal-sftp        AllowTcpForwarding no        X11Forwarding no

解释一下每一行的意思

Subsystem       sftp    internal-sftp  这行指定使用sftp服务使用系统自带的internal-sftpMatch Group sftp  匹配sftp组的用户,如果有多个组用逗号分割也可以使用“Match User mysftp”匹配用户,多个用户之间也是用逗号分割ChrootDirectory /data/ftp/%u  用chroot将用户的根目录指定到/data/ftp/%u,%u代表用户名chroot可以参考:http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/ForceCommand    internal-sftp  指定sftp命令AllowTcpForwarding no  X11Forwarding no  禁止用户使用端口转发

建立用户和组

$ mkdir -p /data/sftp/$ chown -R root:sftp /data/sftp/$ groupadd sftp$ useradd -m -d /data/sftp/user1 -g sftp -s /sbin/nologin user1注意通过上面这条命令建立的用户,其家目录权限是700,需要改成755才可以正常登陆$ chmod -R 755 /data/sftp/

错误的目录权限设定会导致在log中出现”fatal: bad ownership or modes for chroot directory XXXXXX”的内容

目录的权限设定有两个要点:1、由ChrootDirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root2、由ChrootDirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限(755即可)

因为用了chroot,所以/data/sftp/属主一定要是root,并且所属组不能有写入权限,如果上传需要写入在/data/sftp/下建立可写属主的文件夹供上传使用。

$ mkdir /data/sftp/user1/upload$ chown -R user1:sftp /data/sftp/user1/upload

===========================================2015.01.12补充在Ubuntu 12.04 64bit系统部按如上方法部署好了SFTP,发现无法登陆,后来在/var/log/auth.log中发现了日志:fatal: bad ownership or modes for chroot directory component “/ftpdata/ftp/”;于是查看了一下/ftpdata/ftp/的权限,发现该目录的属主是ftp。于是立即将属主修改为root,再次登陆就没问题了请注意,在Ubuntu系统下,“Match Group sftp”及以后的配置项要写在“UsePAM yes”之后,否则同样无法登陆

CentOS 6配置SFTP

相关文章:

你感兴趣的文章:

标签云: