Sftp部署及优化
2025-08-22 15:58:26,

1.SFTP规划

SFTP Server Port: 30022
按照项目进行分类,来创建sftp账号
命名规范:

用户名 权限 sftp目录 Chroot目录 Group
地区+项目+用户(组或个人) rw/r /data/项目/项目 /项目 项目+RW
例:CHN-projeC++tname-a rw /data/projectname/projectname /projectname projectnameRW
CHN-projectname-b r /data/projectname/projectname /projectname 只有写权限才需要加入对应的组

2.配置SFTP

2.1 修改ssh配置

只用第一次修改ssh配置文件

~]# vi /etc/ssh/sshd_config
#Subsystem	sftp	/usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp
Match Group sftp
Match LocalPort 20912
ChrootDirectory  %h   #chroot到所创建用户时的家目录
ForceCommand    internal-sftp
~]# systemctl restart sshd

3.创建sftp账号

下面是每次创建账号需要的操作

3.1 创建目录结构

~]# mkdir –p /data/projectname/projectname 
~]# chmod 775 /data/projectname/projectname

3.2 创建sftp用户

~]# useradd -s /bin/false -d /data/projectname CHN-projectname-b
~]# useradd -s /bin/false -d /data/projectname CHN-projectname-a

3.3设置sftp用户密码

~]# echo ‘CHN-projectname-b:password1’|chpasswd
~]# echo ‘CHN-projectname-a:password2’|chpasswd
#可以使用其他方式配置密码

3.4 创建权限组

~]# groupadd projectnameRW

3.5 把需要写权限加入到权限组中

~]# usermod -aG projectnameRW CHN-projectname-b
如果CHN-projectname-a也需要写权限,加入到权限组(projectnameRW)即可

3.6 配置目录权限

~]# chown root:projectnameRW /data/projectname/projectname

3.7 配置ACL权限

#针对需要多个用户对同一个目录进行读写,需要使用到ACL权限
如果是第一次新建,比较简单,2条命令即可
~]# chmod –R g+s /data/CN-project/CN-project
~]# setfacl -Rm d:g:groupname:rwx /data/CN-project/CN-project

如果是已经在使用的sftp,并且sftp的家目录有数据,手动执行以下命令
~]# chmod -R g+s /data/CN-project/CN-project
~]# setfacl -Rm d:g:groupname:rwx /data/CN-project/CN-project
~]# chown -R :groupname /data/CN-project/CN-project
~]# chmod -R 775 /data/CN-project/CN-project

3.8重启sshd服务

~]# systemctl restart sshd

4.sftp客户端使用

4.1 Linux6

~]# sftp -oPort=30022 CHN-project-user@10.0.0.1
-oPort=30022:SFTP server Port
CHN-project-user:SFTP Username
10.0.0.1:SFTP Server address

4.2 Linux7

~]# mkdir –p /data/projectname/projectname 
~]# chmod 775 /data/projectname/projectname
0

5. sftp日志审计

5.1 修改ssh配置

~]# mkdir –p /data/projectname/projectname 
~]# chmod 775 /data/projectname/projectname
1

5.2 配置日志路径

~]# mkdir –p /data/projectname/projectname 
~]# chmod 775 /data/projectname/projectname
2

5.3 重启生效

~]# mkdir –p /data/projectname/projectname 
~]# chmod 775 /data/projectname/projectname
3

6. sftp日志保存周期

~]# mkdir –p /data/projectname/projectname 
~]# chmod 775 /data/projectname/projectname
4

7.sftp开启每个用户连接数限制

~]# mkdir –p /data/projectname/projectname 
~]# chmod 775 /data/projectname/projectname
5

8.sftp打开用户认证数量限制

~]# mkdir –p /data/projectname/projectname 
~]# chmod 775 /data/projectname/projectname
6

9.sftp配置每个用户最大打开文件数

~]# mkdir –p /data/projectname/projectname 
~]# chmod 775 /data/projectname/projectname
7

10.sftp监控项

10.1 监控sftp连接数

~]# mkdir –p /data/projectname/projectname 
~]# chmod 775 /data/projectname/projectname
8

10.2 sftp日志监控,触发连接数限制

监控sftp日志,指定sftp用户触发连接数限制,告警通知

~]# mkdir –p /data/projectname/projectname 
~]# chmod 775 /data/projectname/projectname
9

11.SFTP高可用

11.1 多台sftp底层存储使用阿里云NAS

使用nas作为/data盘. acl授权命令改为nfs4_setfacl.

11.2 多台sftp创建用户时,保持UID,GID一致.

多台sftp server创建用户用此脚本创建.

~]# useradd -s /bin/false -d /data/projectname CHN-projectname-b
~]# useradd -s /bin/false -d /data/projectname CHN-projectname-a
0

11.3 多台sftp创建用户脚本

创建sftp用户脚本:

~]# useradd -s /bin/false -d /data/projectname CHN-projectname-b
~]# useradd -s /bin/false -d /data/projectname CHN-projectname-a
1

12.SFTP用户空闲超时

~]# useradd -s /bin/false -d /data/projectname CHN-projectname-b
~]# useradd -s /bin/false -d /data/projectname CHN-projectname-a
2

13.SFTP Server迁移

参考:https://www.landui.com/help/show-3462