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),而且需要

转载于:https://www.cnblogs.com/java20130722/archive/2013/03/26/3206968.html

Ubuntu Server如何配置SFTP相关推荐

  1. linux配置sftp-server,Ubuntu Server如何配置SFTP(建立用户监狱)

    SSH File Transfer Protocol是一个比普通FTP更为安全的文件传输协议.(参考资料:http://en.wikipedia.org/wiki/SSH_File_Transfer_ ...

  2. Ubuntu Server下配置UTF-8中文/英文环境

    英文有那么难看么...非要把命令提示都变成中文...算了,你要改就改吧... 有需要给Ubuntu Server装中文环境的往这看,该加sudo的自己加去,俺是root... 1.安装中文语言包 ap ...

  3. Ubuntu server xfce 配置vnc

    大多数服务器没有安装桌面环境,因此我们首先要安装轻量级桌面环境. Ubuntu 存储库中有几个桌面环境,远程桌面管理建议选择安装 Xfce .它是快速,稳定和轻量级的桌面环境,非常适合在远程服务器上使 ...

  4. windows下PXE+TFTP+HTTP自动安装ubuntu server

    网络上的pxe安装linux多为centos,ubuntu server的pxe安装多有不正确,特写此教程 本教程经过本人多次验证无误 kickstart自动全新安装ubuntu server 软件版 ...

  5. 超简单Ubuntu Server 配置FTP服务器教程

    需求:局域网内搭建FTP服务器,不求安全,只求能用! 安排! 服务端:Ubuntu Server 22.04.1 全命令行无GUI 客户机:Windows 11 步骤: 1. 安装vsftpd 服务端 ...

  6. 从零开始一步一步搭建Ubuntu Server服务器、修改数据源、安装Docker、配置镜像加速器、Compose部署Gitlab服务

    场景 最终目的是使用Docker Compose部署一个Gitlab服务. 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程 ...

  7. Ubuntu Server 16.04 LTS上给Docker配置镜像加速器

    场景 Ubuntu Server 16.04 LTS上安装Docker(使用脚本的方式): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  8. Ubuntu Server 下的网络配置

    Ubuntu Server 下的网络配置 七月 24th, 2008 Posted in 笔记 | 没有回响 检查网络配置 $ ifconfig 配置DHCP客户端 $ sudo vi /etc/ne ...

  9. Ubuntu Server 之Apache2 虚拟主机配置指南(个人实践解读)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/468531 这是完 ...

最新文章

  1. Android EditText的光标的显示与隐藏
  2. CTFshow 反序列化 web275
  3. 计算机审计中级培训结业考试,第二期计算机审计中级培训班结业考.doc
  4. three.js glb 多个_25万的预算,奔驰GLB、宝马X1、奥迪Q3该怎么选
  5. 学习心得——李嫣然、逯广捷
  6. 看这玩意复习你还会挂科?《网络原理篇》
  7. mysql 索引失效的情况
  8. Android实战开发--三种地图类型的设计
  9. 网线制作和交换机工作原理
  10. Macbook air 键盘失灵的解决方案
  11. 基层群众工作存在的问题_联系服务群众方面存在的问题及原因
  12. Mac共享主机网络给虚拟机
  13. 本周最新文献速递20220423
  14. 主线程结束子线程会跟着结束吗
  15. 基于JavaWeb的影视创作论坛的设计与实现/影视系统
  16. AudioManager 蓝牙sco连接相关接口
  17. linux服务器移动硬盘挂载,linux挂载命令mount及U盘、移动硬盘的挂载
  18. window 获取文件大小
  19. win10安装CH341SER.INF 失败 且没有COM口问题(德飞莱CH340T)
  20. html 鼠标经过展开,CSS3效果:鼠标悬停背景展开效果

热门文章

  1. 7. SQL -- 创建数据库(表,字段)
  2. 访问控制管理的积极意义案例
  3. [转载] 杜拉拉升职记——23 “You deserve it”的两种解释
  4. DATAGUARD配置错误的解决日志
  5. 几篇关于Hadoop+Hive数据仓库的入门文章
  6. org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role:no sessi
  7. Linux中ELF格式 可执行文件+动态链接器 的加载
  8. python的os模块基本使用
  9. Vue 路由router的两种模式
  10. [Vuex系列] - Module的用法(终篇)