Ubuntu Server如何配置SFTP

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

因为工作需要,我研究了一下如何在Ubuntu Server上配置SFTP,记录如下。

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

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

第01步,如果还没有安装OpenSSH服务器,先安装它。

sudo apt-get install openssh-server

第02步,为SFTP访问创建用户组,便于管理权限。

sudo addgroup sftp-users

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

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

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

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配置文件。

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/2157011
http://www.linuxidc.com/Linux/2011-01/31022.htm

时间: 2024-12-23 09:23:14

Ubuntu Server如何配置SFTP的相关文章

[转]ubuntu server上网配置

[转]ubuntu server上网配置 http://blog.sina.com.cn/s/blog_6c9d65a101011pyt.html 今天我的ubuntu server上不去网了,所以重新配置一下,正好整理一下: 一.查看网络配置状态 ifconfig -a 二.配置dhcp客户端 修改:/etc/network/interface文件 auto lo iface lo inet loop back auto eth0 iface eth0 inet dhcp //eth0是连接设

ubuntu server 1604 配置网络信息

对于新安装的linux 服务器(ubuntu server 1604) 一,配置网络 连接网线与路由器 查看系统的网卡信息 ifconfig -a //列出所有的网卡信息,不管启用还是没有启用的 其中 en开头的有线以太网卡.网上的资料很多就是enth0,其实这个是不一定的,我的电脑网卡名就是enp7s0f5,所以照搬网上资料总是不能上网. 同理wl开头的是无线网卡. 有线配置 sudo vim /etc/network/interfaces  //打开配置文件并将配置文件改为如下,保存 1.静

在Ubuntu Server下配置LAMP环境

1. 下载Ubuntu Server,地址https://www.ubuntu.com/download/server 2. 在虚拟机上安装Ubuntu Server.根据安装引导过程一步步安装,跟在自己电脑安装Windows操作系统类似.安装中会设置一个用户名和密码,安装成功后显示输入用户名的提示.大概是下图中的样子: 3. 一般情况下,我们会使用远程管理工具,我这里使用的是xShell.下载xShell并安装在自己电脑,直接百度xShell在百度软件中心下载就行.新建连接如下图: 填写Nam

VirtualBox下安装Ubuntu Server并配置Xshell连接到本地Ubuntu

VirtualBox里面网络设置端口转发:例如主机端口设为22,子系统端口设置为22 Linux的几个基础命令学习: https://linux.cn/article-6160-1.html

Oracle VM VirtualBox +ubuntu server 搭建虚拟服务器局域网

因为公司项目需要做架构原型Demo,但是在架构部署方面又不可以完全都用真机来弄(成本), 所以这里就只能搭建虚拟机局域网环境.也比较简单,这里只是做一下记录. 注意:安装VirtualBox,在VirtualBox上安装ubuntu server及server上安装软件不在此讲范围内. 1.配置宿主机网络 右键本地连接==>属性==>共享==>勾选Internet连接共享的2个复选框 右键本地连接==>属性==>网络==>勾选VirtualBox Bridged Net

xshell远程终端操作Ubuntu server安装LAMP环境之最详细笔记之二PHP开发环境配置

前言: 昨天学会了安装server,今天试着通过远程终端xshell来安装LAMP,搭配一下开发环境,也有集成环境可以一键安装使用,还是瞎折腾一下,手动一步一步搭建一下这个开发环境. 接上一篇:ubuntu server 14.04 LTS下搭建LAMP环境之最详细笔记之一U盘安装双系统本文原创博客地址:http://www.cnblogs.com/unofficial官网地址:www.pushself.com) 准备: 在windows系统上首先需要安装xhsell,具体下载地址可以搜一下,安

VirtualBox 内的 Ubuntu Server 虚拟机网络配置

环境: 宿主机:Windows 7,单网卡: 虚拟机:ubuntu-14.04.1-server-amd64: 宿主机上网是连接的路由器,IP 地址是通过 DHCP 服务自动获取的: 基本情况: Ubuntu Server 为全新安装.在安装完成之后发现,通过虚拟机可以 ping 通宿主机,但宿主机 ping 不通虚拟机.也尝试关闭防火墙,但没有作用,最后也发现跟防火墙没有关系. 正确配置: 首先设置虚拟机的网络,在 “Oracle VM VirtualBox 管理器”中选择新安装的 Ubunt

Ubuntu Server 12.04 静态IP简洁配置

PS:很长时间没使用Ubuntu了,刚才安装个Ubuntu Server 12.04做测试.Ubuntu的网络设置跟Redhat系是不一样的,配置IP时发现跟以前的Ubuntu桌面版本也有所不同,记录如下: 1.配置静态IP地址: # vim /etc/network/interfaces 原内容有如下4行:auto loiface lo inet loopback auto eth0iface eth0 inet dhcp 以上表示默认使用DHCP分配IP,修改为如下: auto loifac

Ubuntu Server 14.04 Apache2.4 虚拟主机配置 以及 模块重写的配置

环境:Ubuntu Server 14.04 Apache2.4 1.虚拟主机配置 在apache2.4中,虚拟主机的目录是通过/etc/apache2/sites-available中配置的,默认情况下,apache有一个默认的虚拟主机文件叫000-default.conf.我们将会复制000-default.conf文件内容到我们新的虚拟主机配置文件中. sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/si