centos php sftp 扩展,CentOS下实现SFTP CHROOT的几种方法

有些应用场景下须要限制用户只能使用SFTP,但不容许登录系统SHELL。这里介绍几种方法来实现这样的需求。php

1、经过MySecureShell实现

什么是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.shell

安装MySecureShell

配置三方软件源vim

Centos 5

$ vim /etc/yum.repos.d/mysecureshell.repo

[mysecureshell]

name=MySecureShell

baseurl=http://mysecureshell.free.fr/repository/index.php/centos/5.5/

enabled=1

gpgcheck=0

Centos 6

$ vim /etc/yum.repos.d/mysecureshell.repo

[mysecureshell]

name=MySecureShell

baseurl=http://mysecureshell.free.fr/repository/index.php/centos/6.4/

enabled=1

gpgcheck=0

安装MySecureShellcentos

$ yum --disablerepo=\* --enablerepo=mysecureshell install mysecureshell

配置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下可保持不变。app

修改用户Shell为MySecureShell

$ chsh -s /bin/MySecureShell mike

2、经过OpenSSH的internal-sftp实现

若是要启用OpenSSH自带的的Chroot功能,OpenSSH版本必需在在4.8p1以上。ssh

检查OpenSSH版本

$ rpm -qa|grep openssh

openssh-4.3p2-26.el5

openssh-server-4.3p2-26.el5

openssh-askpass-4.3p2-26.el5

openssh-clients-4.3p2-26.el5

因为CentOS5.X自带的OpenSSH版本太低不支持SFTP CHROOT,因此须要先把SSH升级到4.8P1以上。升级可参考:CentOS下安装OpenSSH 5.8的三种方法ide

建立用于SFTP的用户

$ useradd  -d /home/TempUpload/ -M test2

配置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,userBurl

若是是群组的则将User改成Group后,再接群组名称。例如:Match Group rootedSFTPspa

ChrootDirectory设定要chroot的位置,能够加上PATTERNS作区隔。如/home/%u,%u表示用户变量,%h为限制到用户的主目录。更多可见:man sshd_configrest

设定Chroo目录权限

$ chown root:root /home/TempUpload

$ chmod 755 /home/TempUpload

错误的目录权限设定会致使在log中出现”fatal: bad ownership or modes for chroot directory XXXXXX” 的讯息。

目录的权限设定有两个要点:

一、由ChrootDirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root

二、由ChrootDirectory指定的目录开始一直往上到系统根目录为止都不能够具备群组写入权限

创建SFTP用户登入后可写入的目录

$ mkdir /home/TempUpload/Upload

$ chown test2:test2 /home/TempUpload/Upload

检查sshd_config內容是否正确

$ sshd -T

从新启动sshd

$ service sshd restart

3、其它方法

还可经过scponly和rssh实现,这两个的原理和MySecureShell差很少,不过这两个必须先作得作一个CHROOT环境,相对比较麻烦些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值