当前位置:首页 > 行业动态 > 正文

如何设置和配置Linux SFTP服务器?

SFTP服务器在Linux系统中通过SSH协议提供安全的文件传输服务,支持加密和身份验证。

Linux SFTP服务器配置与管理

前言

如何设置和配置Linux SFTP服务器?  第1张

SFTP(Secure File Transfer Protocol,安全文件传输协议)是一种通过加密的方式在两台计算机之间传输文件的安全协议,相较于传统的FTP服务,SFTP提供了更高级别的安全性和数据保护能力,本文将详细介绍如何在Linux系统上部署和管理SFTP服务器,以确保数据在传输过程中的安全性。

一、规划配置sftp全局数据存储目录

在配置SFTP之前,首先要规划并配置好SFTP数据存储目录,建议为SFTP数据存储目录单独挂载一个LVM逻辑卷,而不是直接挂载使用磁盘分区,使用逻辑卷的好处是方便后期动态调整SFTP数据存储目录空间大小,以及对数据进行快照等操作,以下是创建并挂载逻辑卷的步骤:

1、创建逻辑卷:lvcreate -L 10G -n sftpdata vgname

2、格式化逻辑卷:mkfs.ext4 /dev/vgname/sftpdata

3、挂载逻辑卷:mount /dev/vgname/sftpdata /sftpdata

4、修改/etc/fstab文件,使系统启动时自动挂载该逻辑卷:/dev/vgname/sftpdata /sftpdata ext4 defaults 0 0

注意:SFTP数据存储目录的所属用户和组要配置为root:root,权限配置为755。

二、配置sftp用户独立目录的sftp服务

1. 创建并配置sftp用户

创建用户组sftpusers:sudo groupadd -f sftpusers

创建用户zhangsan和lisi,并指定用户所属组为sftpusers:

 sudo useradd -g sftpusers zhangsan
  sudo useradd -g sftpusers lisi

设置用户密码:

 sudo passwd zhangsan
  sudo passwd lisi

设置用户密码永不过期:

 sudo chage -m 0 -M 99999 -I -1 -E -1 zhangsan
  sudo chage -m 0 -M 99999 -I -1 -E -1 lisi

创建用户同名目录及数据存储目录data:

 sudo mkdir -p /sftpdata/zhangsan/data
  sudo mkdir -p /sftpdata/lisi/data

将数据存储目录data的所属用户和用户组分别配置为zhangsan:sftpusers和lisi:sftpusers:

 sudo chown zhangsan:sftpusers /sftpdata/zhangsan/data/
  sudo chown lisi:sftpusers /sftpdata/lisi/data/

修改用户主目录为用户数据存储目录:

 sudo usermod -d /sftpdata/zhangsan/ zhangsan
  sudo usermod -d /sftpdata/lisi/ lisi

2. 配置sshd_config文件

查看是否安装openssh-server服务:

 apt list | grep openssh-server
  dpkg --get-selections | grep openssh-server

编辑SFTP配置文件/etc/ssh/sshd_config:

 sudo vim /etc/ssh/sshd_config

添加以下内容至配置文件末尾:

 Match User zhangsan
    ChrootDirectory /sftpdata/zhangsan
    ForceCommand internal-sftp
    PermitTunnel no
    AllowTcpForwarding no
  Match User lisi
    ChrootDirectory /sftpdata/lisi
    ForceCommand internal-sftp

三、配置sftp用户共享目录的sftp服务

1. 创建并配置sftp用户组

创建用户组sftpgroup:sudo groupadd sftpgroup

创建用户zyfdsftp并指定用户所属组为sftpgroup:

 sudo useradd -g sftpgroup -s /bin/false zyfdsftp

设置用户密码:sudo passwd zyfdsftp

2. 创建共享目录并配置权限

创建SFTP共享目录:sudo mkdir -p /data/sftpfile

将共享目录设置为用户主目录:sudo usermod -d /data/sftpfile zyfdsftp

创建上传子目录:sudo mkdir -p /data/sftpfile/upload

设置上传目录权限:

 sudo chown zyfdsftp:sftpgroup /data/sftpfile/upload
  sudo chmod 777 /data/sftpfile/upload

3. 配置sshd_config文件

编辑SFTP配置文件/etc/ssh/sshd_config:

 sudo vim /etc/ssh/sshd_config

添加以下内容至配置文件末尾:

 Subsystem sftp internal-sftp
  Match Group sftpgroup
    ChrootDirectory /data/sftpfile
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

四、重启服务并测试

关闭Selinux策略:sudo setenforce 0

重启sshd服务:sudo systemctl restart sshd.service

在其他服务器上进行验证:sftp 用户名@IP地址

五、FAQs

Q1: SFTP服务器无法连接怎么办?

A1: 如果无法连接到SFTP服务器,请检查以下几点:

1、确保SSH服务已启动并正在运行:sudo systemctl status sshd

2、确保防火墙允许SSH流量:sudo ufw allow 22/tcp

3、确保Selinux已禁用或配置正确:sudo setenforce 0

4、确保配置文件路径正确且无语法错误:sudo vim /etc/ssh/sshd_config

5、确保目标目录存在且权限正确:sudo ls -ld /path/to/directory

6、确保网络连接正常,可以通过ping命令测试网络连通性:ping IP地址

Q2: 如何更改SFTP用户的根目录?

A2: 你可以通过修改sshd_config文件中的ChrootDirectory指令来更改SFTP用户的根目录,要将用户zhangsan的根目录更改为/new/path,可以在配置文件中添加或修改如下行:

Match User zhangsan
    ChrootDirectory /new/path
    ForceCommand internal-sftp
    PermitTunnel no
    AllowTcpForwarding no
```保存后重启sshd服务即可生效。
0