2021SC@SDUSC

因为本次项目使用了安全FTP服务器作为文件的存储、组织、管理工具,所以有必要介绍一下在linux环境下搭建SFTP服务的整体流程。

文章目录

  • 安装SFTP服务
  • 目标
  • 操作步骤
    • sftp用户、用户组的创建
    • 创建文件服务器目录
    • 权限配置
  • 重启SSH

安装SFTP服务

sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统。 SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

Ubuntu默认只安装openssh-client,需要手动安装openssh-server或者sftp-server。

sudo apt update
sudo apt install openssh-server

目标

在Ubuntu系统上开通sftp文件服务,允许某些用户上传及下载文件。

但是这些用户只能使用sftp传输文件,不能使用SSH终端访问服务器,并且sftp不能访问系统文件。

系统管理员则既能使用sftp传输文件,也能使用SSH远程管理服务器。

操作步骤

sftp用户、用户组的创建

  • 添加sftp用户,创建 sftp 用户组
sudo adduser alice
sudo addgroup sftp-users
# 将alice从所有其他用户组中移除并加入到sftp-users组,并且关闭其Shell访问
#/bin/false也可以替换为/sbin/nologin,目的是不允许该用户登录到系统中
sudo usermod -G sftp-users -s /bin/false alice
  • 创建sftp服务器的管理员身份,并且加入 ssh用户组(不限制他的shell操作权限)
sudo adduser admin
sudo addgroup ssh-users
# -a 表示以追加形式将 admin 加入 ssh-users
sudo usermod -a -G ssh-users admin

创建文件服务器目录

  • 创建服务器文件目录
# 创建监狱目录
sudo mkdir /home/sftp_root
# 普通用户能够写入的共享文件目录
sudo mkdir /home/sftp_root/shared
# 设置共享文件夹的拥有者为管理员、用户组为 sftp-users
sudo chown admin:sftp-users /home/sftp_root/shared
# 拥有者、sftp用户组的成员具有一切权限
sudo chmod 770 /home/sftp_root/shared

默认允许所有用户或者用户组登录,若仅允许指定用户或者用户组访问,按照以下格式配置。

# 以空格间隔
AllowUsers user1 user2
AllowGroups group1 group2

权限配置

sudo vim /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访问系统,其中ssh-uers用户组可以使用ssh,并且不受其他限制。

    而SFTP用户组仅能使用SFTP进行访问,且不能使用shell

  • 针对sftp-users用户,额外增加一些设置:将“/home/sftp_root”设置为该组用户的系统根目录(因此它们将不能访问该目录之外的其他系统文件;

  • 禁止TCP Forwarding和X11 Forwarding

另外需要注意的是:ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。

需要注意的一点的是,现在所有需要远程连接的用户都必须加入 ssh-users 才行。

如将用户 songyangji 加入 ,这样ta就可以使用ssh连接本机。

sudo usermod -a -G ssh-users songyangji
  • 限制ssh连接的访问IP

仍然是

sudo vim /etc/ssh/sshd_config
# Authentication:
AllowUsers root@10.10.10.*        #限制root用户只能通过10.10.10.*网段登录访问
AllowUsers charles@10.10.10.*        #限制charles用户只能通过10.10.10.*网段登录访问
AllowUsers john@10.10.10.*

重启SSH

# 亦可
# /etc/init.d/ssh restart
service ssh restart

参考博客

搭建sftp服务器

Ubuntu 配置 SFTP 服务器相关推荐

  1. linux sftp 中文,Linux(CentOS)上配置 SFTP服务器

    Linux(CentOS)上配置 SFTP服务器 发布于 2017-03-13 06:07:46 | 87 次阅读 | 评论: 0 | 来源: 网友投递 LinuxLinux是一套免费使用和自由传播的 ...

  2. Ubuntu配置NFS服务器(Linux挂载Linux)

    Ubuntu配置NFS服务器 服务器端的配置 Ubuntu安装NFS服务器端 sudo apt-get install nfs-kernel-server 服务端查看版本 nfsstat -s 在桌面 ...

  3. CentOS7 安装配置SFTP服务器详解

    CentOS7 安装配置SFTP服务器详解 1.SFTP简介 SSH文件传输协议(英语:SSH File Transfer Protocol,也称Secret File Transfer Protoc ...

  4. 2021-04-20 #CentOS7配置sftp服务器操作日志#

    #CentOS7配置sftp服务器操作日志# 1.编辑/etc/ssh/sshd_config配置文件 注释Subsystem sftp /usr/libexec/openssh/sftp-serve ...

  5. Ubuntu 配置Samba 服务器

    安装Ubuntu samba服务器 sudo apt-get install samba sudo apt-get install smbfs 配置samba服务器 samba配置文件: /etc/s ...

  6. Ubuntu 配置WebDav服务器

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

  7. linux webdav服务,Ubuntu 配置WebDav服务器

    什么是WebDAV? 简单地说:"基于Web的分布式创作和版本"的WebDAV.它是HTTP协议,它允许用户协作编辑和管理远程Web服务器上的文件的扩展.听说苹果的icloud 也 ...

  8. 架设配置sftp服务器

    架设sftp服务器 报错无法登录问题: packet_write_wait: Connection to 10.8.33.126 port 22: Broken pipe Couldn 't read ...

  9. linux连接sftp服务器,如何在Linux上配置SFTP服务器

    在本教程中,我们将引导您在Ubuntu服务器上设置SFTP.本文分为以下几节: 创建一个SFTP组和用户. 安装SSH守护程序. 配置SSH守护程序. 使用命令行登录到SFTP. 在开始之前,您需要确 ...

  10. 在Ubuntu配置tftp服务器的简单几步并下载文件到开发板

    1.关于TFTP的简单说明: TFTP:简单文件传输协议 是在TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂.开销不大的文件传输服务,端口号为69. 2.使用前查 ...

最新文章

  1. java try catch_异常处理,JAVA中异常处理的介绍
  2. 算法:验证二叉搜索树
  3. 模糊查询一--视图写sql
  4. CommandLineRunner 和 ApplicationRunner 的区别
  5. ShowSlow+Yslow环境搭建
  6. api.cls.php文件,php数据POST提交到API接口
  7. 解决WordPress无法发送电子邮件
  8. Nginx(二)状态信息(status)
  9. 数说:这只程序员组建的乐队为何能进HOT5?
  10. PDFLib9以上版本的去水印办法
  11. windowspython专用装B代码
  12. excel单元格中换行的办法/word中添加脚注的方法
  13. JavaWeb——动态 web 资源开发
  14. Python 之 pygame 学习(入门知识)
  15. react 中 ref 管理列表
  16. 常见的agv控制系统及功能有哪些?
  17. 没有人能比快递员更懂通信协议(sig mesh协议栈之网络架构)
  18. Centos 7.9 xfs 文件系统测试
  19. 学会MySQL数据库【上】
  20. burp suite burp browser error

热门文章

  1. 滑模控制学习笔记(二)
  2. spss因子分析结果解读_因子分析巴特利特球形度检验结果解读
  3. 交通流分析1:《基于大数据的城市公路交通流短时预测研究_张红》阅读总结
  4. 一年读完100本书(5/100)《创新者的窘境》2021-02-25
  5. tomcat自动重启
  6. python手写lfw数据集转pair.txt形式
  7. 《软件工程导论》复习知识点总结
  8. Python POST 修改某计步APP的数据
  9. bullmind在线流程图软件,在线visio软件
  10. 联想 m73 黑苹果 软路由 esxi AIO