Ubuntu Server如何配置SFTP(创建用户监狱)

SSH File Transfer Protocol是一个比普通FTP更为安全的文件传输协议。(参考资料:http://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol)它工做在Secure Shell(SSH)上,确保文件被加密传输。html

 

由于工做须要,我研究了一下如何在Ubuntu Server上配置SFTP,记录以下。linux

 

需求:在服务器上开通SFTP文件服务,容许某些用户上传及下载文件。可是这些用户只能使用SFTP传输文件,不能使用SSH终端访问服务器,而且SFTP不能访问系统文件(即所谓的“Jail(监狱)”)。系统管理员则既能使用SFTP传输文件,也能使用SSH远程管理服务器。shell

 

为了便于讨论,我假设我将容许sftp-users用户组内的用户使用SFTP,但不容许使用SSH Shell,且该组用户将被"监狱"(修改系统根目录)。我将在sftp-users组内建立一个用户“alice”。而我将容许ssh-users使用SFTP以及SSH。系统管理员的帐户名为admin。ubuntu

 

第01步,若是尚未安装OpenSSH服务器,先安装它。安全

sudo apt-get install openssh-server

第02步,为SFTP访问建立用户组,便于管理权限。服务器

sudo addgroup sftp-users

第03步,建立SFTP用户,并配置相应权限。这里第二行的意思是将alice从全部其余用户组中移除并加入到sftp-users组,而且关闭其Shell访问。若是想深刻了解usermod命令,可使用如下"man usermod"命令查看帮助文档。ssh

sudo adduser alice
sudo usermod -G sftp-users -s /bin/false alice

第04步,建立SSH用户组,并把管理员加入到该组(注意usermod中的-a参数的意思是不从其余用户组用移除)。post

sudo addgroup ssh-users
sudo usermod -a -G ssh-users admin

第05步,准备“监狱”的根目录及共享目录。这里解释一下,“监狱”的根目录必须知足如下要求:全部者为root,其余任何用户都不能拥有写入权限。所以,为了让SFTP用户可以上传文件,还必须在“监狱”根目录下再建立一个普通用户可以写入的共享文件目录。为了便于管理员经过SFTP管理上传的文件,我把这个共享文件目录配置为:由admin全部,容许sftp-users读写。这样,管理员和SFTP用户组成员就都能读写这个目录了。加密

sudo mkdir /home/sftp_root
sudo mkdir /home/sftp_root/shared
sudo chown admin:sftp-users /home/sftp_root/shared
sudo chmod 770 /home/sftp_root/shared

第06步,修改SSH配置文件。spa

sudo nano /etc/ssh/sshd_config

在sshd_config文件的最后,添加如下内容:

AllowGroups ssh-users sftp-users

Match Group sftp-users

ChrootDirectory /home/sftp_root

AllowTcpForwarding no

X11Forwarding no

ForceCommand internal-sftp

 

这些内容的意思是:

只容许ssh-uers及sftp-users经过SSH访问系统;

针对sftp-users用户,额外增长一些设置:将“/home/sftp_root”设置为该组用户的系统根目录(所以它们将不能访问该目录以外的其余系统文件);禁止TCP Forwarding和X11 Forwarding;强制该组用户仅仅使用SFTP。

 

若是须要进一步了解细节,可使用“man sshd_config”命令。这样设置以后,SSH用户组能够访问SSH,而且不受其余限制;而SFTP用户组仅能使用SFTP进行访问,并且被关进监狱目录。

 

第07步,重启系统以便使新配置生效。

sudo reboot now

 

完成啦!

 

进一步的讨论:SSH用户组将能远程访问全部系统文件,也许不是全部状况下都适用。某些状况下,也许想一样把SSH用户也关监狱。这时候,须要做跟SFTP相似的配置(除了不用usermod -s /bin/false),并且须要把容许SSH用户访问的系统文件复制到监狱根目录下相应的位置。具体信息能够在网上查找,我本身没有实践验证,因此就不误导你们了。(上面这个教程,是我从网上不少似是而非的资料中经过本身的实验整理出来的,在Ubuntu Server 12.04 LTS 64-bit系统上验证经过。很是痛恨那些好像能用但实际错漏不少的教程!)

 

参考:

http://yhf8377.blog.163.com/blog/static/176860177201210217219800/

http://ihacklog.com/post/how-to-enable-secure-shell-in-ubuntu.html

http://blog.csdn.net/xiaosu_521/article/details/2157011http://www.linuxidc.com/Linux/2011-01/31022.htm

相关文章
相关标签/搜索