SFTP配置

Lear 2025-08-11 09:00:00
Categories: > Tags:

SFTP配置

SFTP简介

sftp是一种安全的文件传送协议,是ssh内含协议,也就是说只要sshd服务器启动了,sftp就可使用,不需要额外安装,它的默认端口和SSH一样为22。

修改/etc/ssh/sshd_config配置文件

核心参数说明:

/data/sftp/%u:%u 会自动替换为登录用户名

此配置会使:

hanhua_test 用户 → 锁定到 /data/sftp/hanhua_test

junhang_test 用户 → 锁定到 /data/sftp/junhang_test


#强制执行内部sftp

Subsystem sftp internal-sftp

#限定只有sftpfroup组的才能访问

Match Group sftpgroup

#是否允许进行 X11 转发

X11Forwarding no

#是否允许TCP转发

AllowTcpForwarding no

#设定属于用户组sftp的用户访问的根目录

ChrootDirectory /data/sftp/%u

#强制执行这里指定的命令而忽略客户端提供的任何命令

ForceCommand internal-sftp


注释Subsystem sftp /usr/libexec/openssh/sftp-server

#Subsystem sftp /usr/libexec/openssh/sftp-server


创建用户


注:为保障系统安全,添加用户的时候建议添加如下参数:

-M // 表示创建用户时不生成对应home目录

-s /sbin/nologin // 表示sftp用户不能登录系统


useradd -M -s /sbin/nologin hanhua_test

password hanhua_test

useradd -M -s /sbin/nologin junhang_test

password junhang_test


创建组名


将用户加入 sftpgroup

usermod -aG sftpgroup hanhua_test

usermod -aG sftpgroup junhang_test


验证组关系

groups hanhua_test


创建目录


sftp hanhua_test@IP

hanhua_test@IP's password:

packet_write_wait: Connection to IP port 22: Broken pipe

Couldn't read packet: Connection reset by peer


以上报错的原因就是,未严格按照以下路径创建目录及权限


# 将用户目录所有权改为 root

sudo chown root:root /data/sftp/hanhua_test

sudo chown root:root /data/sftp/junhang_test

# 设置正确权限

sudo chmod 755 /data/sftp/hanhua_test

sudo chmod 755 /data/sftp/junhang_test

# 创建用户可写子目录

sudo mkdir /data/sftp/hanhua_test/files

sudo mkdir /data/sftp/junhang_test/files

sudo chown hanhua_test:hanhua_test /data/sftp/hanhua_test/files

sudo chown junhang_test:junhang_test /data/sftp/junhang_test/files

sudo chmod 770 /data/sftp/hanhua_test/files

sudo chmod 770 /data/sftp/junhang_test/files


重启SSH

systemctl restart sshd.service


多功能剪刀折叠旅行剪不锈钢方便剪便携折叠剪钓鱼剪子迷你小剪刀

权限结构最终检查


$ tree /data/sftp -p

/data/sftp

├── [drwxr-xr-x root] hanhua_test

│ └── [drwxrwx— hanhua_test] files # 用户可操作

└── [drwxr-xr-x root] junhang_test

└── [drwxrwx— junhang_test] files


核心要点总结:

用户必须在sftpgroup组中

Chroot目录(如/data/sftp/hanhua_test) 必须

- 所有者:root:root

- 权限:755

用户文件操作只能在files/子目录进行


效果验证

# 1. 连接测试

sftp hanhua_test@IP

# 2. 登录后操作

sftp> pwd

Remote working directory: /

sftp> ls

files # 应只看到此目录

sftp> cd files

sftp> put test.txt # 可正常上传文件到files目录


路径规则详解

核心路径要求

/data/sftp/hanhua_test 是 必须存在的专属路径

ChrootDirectory /data/sftp/%u # %u 自动扩展为用户名


为什么不能直接使用 /data/sftp?

图片


设计原理:通过专属路径实现: