sftp服务器怎么搭建 您所在的位置:网站首页 sftp服务器搭建 sftp服务器怎么搭建

sftp服务器怎么搭建

#sftp服务器怎么搭建| 来源: 网络整理| 查看: 265

一、SFTP是什么

SFTP(SSH File Transfer Protocol)是一个比普通FTP更为安全的文件传输协议。它工作在SSH 上,确保文件被加密传输。默认使用端口是 22.

SFTP 常用客户端软件推荐使用 FileZilla,下载链接如下:https://www.filezilla.cn/download/client

FileZilla 客户端配置步骤: 打开 FileZilla --> 文件 --> 站点管理 --> 新站点 --> 常规 --> 协议选择 SFTP --> 填写主机 IP,用户名,密码 --> 连接

 

二、需求描述 1. 两类 SFTP 用户,给这两类用户分为两个用户组,分别命名为 sftp_root 和 sftp_read 2. sftp_root 用户组可以对 SFTP 指定目录拥有所有权限(读,增,删,改) 3. sftp_read 用户组只有可读权限,不允许删除,上传操作,只允许下载操作

三、在 Ubuntu 服务器上 搭建 SFTP 服务端

在 SFTP 搭建的过程中,遇到了一个客户端连不上服务端的问题。根本原因是忽略了 SFTP “监狱”根目录,导致每次都被拒绝链接。

“监狱”的根目录必须满足如下要求:所有者为root,其他任何用户都不能拥有写入权限。

“监狱”根目录下需要创建 SFTP 共享目录,该共享目录才是 SFTP 用户可以维护的目录,“监狱”根目录只能ssh等登录ubuntu服务器后用root用户维护。

以下步骤都是在 Ubuntu 服务器的终端中输入命令。

1. 安装OpenSSH服务器 sudo apt-get install openssh-server

2. 创建 sftp_root 和 sftp_read 用户组 sudo addgroup sftp_root sudo addgroup sftp_read

3. 创建使用 SFTP 的用户,如果已经有已存在用户了,也可以跳过改步骤 sudo adduser test_read_user1 sudo adduser test_read_user2 ... sudo adduser test_root_user1 sudo adduser test_root_user2 ...

4. 将不同类别用户添加到对应的用户组 将 test_read_user1,test_read_user2 添加到 sftp_read 用户组,并从所有其他用户组中移除,同时关闭其Shell访问 sudo usermod -G sftp_read -s /bin/false test_read_user1 sudo usermod -G sftp_read -s /bin/false test_read_user2 sudo usermod -a -G sftp_read test_root_user1 sudo usermod -a -G sftp_read test_root_user2

将 test_root_user1,test_root_user2 添加到 sftp_root 用户组,但不从其他用户组用移除(当然,也可以像 test_read_user1 一样,同时关闭其Shell访问,但不要从所有其他用户组中移除) sudo usermod -a -G sftp_root test_root_user1 sudo usermod -a -G sftp_root test_root_user2

以下步骤在自己没有搞清楚原理前,请务必按照下面的步骤严格执行,不要有漏掉的,避免将来访问权限不对,造成困惑。

5. 创建“监狱”根目录和 SFTP 共享目录并修改用户和权限 以要共享 share1 和 share2 两个目录为例: sudo mkdir /data/testSFTP sudo mkdir /data/testSFTP/share1 sudo mkdir /data/testSFTP/share2

sudo chown root:sftp_read /data/testSFTP sudo chmod 755 /data/testSFTP sudo chown root:sftp_root /data/testSFTP/share1 sudo chown root:sftp_root /data/testSFTP/share2 sudo chmod 775 /data/testSFTP/share1 sudo chmod 775 /data/testSFTP/share2

6. 修改 SSH 配置文件 sudo vim /etc/ssh/sshd_config

#Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp AllowGroups sftp_root sftp_read root Match Group sftp_read AllowTcpForwarding no X11Forwarding no ForceCommand internal-sftp ChrootDirectory /data/testSFTP

相关配置解释如下: (1)添加 sftp 子系统,SFTP 根目录会根据下面的 Match 进行匹配,如果没有匹配到而且还在 AllowGroups 的用户组,那么 SFTP 根目录会是用户根目录,比如,/home/test_read_user1/ (2)允许 sftp_root sftp_read root 用户组通过 SFTP 访问 SFTP 服务器 (3)置 Match 的用户组 sftp_read,只要在该用户组的用户,都要满足 Match 下的限制条件 (4)禁止TCP Forwarding和X11 Forwarding;          强制该组用户仅仅使用SFTP;          该用户组根目录为 /data/testSFTP

7. 重启 ssh 服务 sudo service ssh restart

备注:如果您的网络没有硬件防火墙,也没有设置ubuntu软件防火墙(默认关闭的),那么理论上上讲,可以通过 FileZilla 成功访问该 SFTP 服务器了。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有