SFTP搭建教程
SFTP搭建教程
SFTP(Secure File Transfer Protocol)是一种通过 SSH(Secure Shell)实现加密文件传输的协议,用于在网络上安全地上传、下载和管理文件。
可以简单理解为scp的批量操作
Debian12 root用户默认启用sftp服务
一、Docker搭建SFTP文件服务器
- 创建docker.yaml配置文件
nano docker.yaml
内容如下
version: '3'
services:
sftp:
image: atmoz/sftp
volumes:
- ./upload:/home/kk/upload
ports:
- "2222:22"
command: kk:kpassword:1001
用户名:kk
密码:kpassword
本地目录:./upload
容器目录 :/home/kk/upload
映射端口:2222
- 创建本地目录
mkdir upload
- 更改宿主机目录的属主
chown 1001:1001 ./upload
- 创建容器
docker compose -f docker.yaml up -d
二、SFTP常用命令
- 登陆
sftp -P 2222 kk@192.168.1.193
- 文件管理
#查看远程目录和文件
ls
#查看本地目录和文件
lls
#切换目录
cd
#创建目录
mkdir 目录
#删除文件
rm文件
#重命名
rename 文件
#复制
cp 旧文件 新文件
- 上传
put 文件
#上传目前需要创建对应的目录
put -r 目录
- 下载
get 文件
get -r 目录
- 退出
exit
- 目录操作
#切换远程目录和本地目录,搭配exit回到刚才的目录
!
三、Debian搭建SFTP文件服务器
- 安装openssh-server
SFTP 是通过 OpenSSH 提供的
apt install openssh-server
- 配置ssh服务
systemctl enable ssh
systemctl start ssh
- 配置sftp子系统(可选,默认已启用)
nano /etc/ssh/sshd_config
找到这一行
Subsystem sftp /usr/lib/openssh/sftp-server
重启ssh服务
systemctl restart ssh
- 创建一个只允许sftp的用户
groupadd sftpusers
useradd -m -s /usr/sbin/nologin -g sftpusers sftpuser
passwd sftpuser
- 设置sftp目录权限
mkdir -p /home/sftpuser/uploads
chown root:root /home/sftpuser
chmod 755 /home/sftpuser
chown sftpuser:sftpusers /home/sftpuser/uploads
- 用户隔离
禁用 SSH Shell,仅允许 SFTP
nano /etc/ssh/sshd_config
在文件末尾添加:
Match Group sftpusers
ChrootDirectory /home/%u
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
重启ssh服务
systemctl restart ssh
- 用户登陆
sftp sftpuser@192.168.1.193