云网牛站
所在位置:首页 > Linux教程 > CentOS下实现SFTP CHROOT的几种方法

CentOS下实现SFTP CHROOT的几种方法

2018-07-10 16:27:46作者:hi-linux稿源:运维美

本文讲解在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环境,相对比较麻烦些。

 

相关主题

云服务器相同系统镜像模板中OpenSSH密钥相同的处理方法

精选文章
热门文章