SFTP 服务配置

本来打算研究下怎么在服务器上搭建一个安全的 FTP 服务器,查了资料发现 SFTP 更安全。

SFTP 是基于 SSH 加密的文件传输协议。

安装 openssh

1
$ sudo apt-get install openssh-server

处理权限问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# SFTP 的根目录
$ sudo mkdir /home/sftp

# 共享目录,用于普通用户上传文件
$ sudo mkdir /home/sftp/shared

# 创建一般用户的用户组,一般用户只能使用 SFTP 传输文件,无法使用 SSH 登陆服务器
$ sudo addgroup sftp_user

# 比一般用户权限高一级的用户的用户组,该组下的用户除了可以使用 SFTP 传输文件,还可以使用 SSH 登陆服务器
$ sudo addgroup ssh_user

# 创建一般账户,强制不创建用户主文件夹
$ sudo adduser -M jail

# 将 jail 这个账户加入一般用户的用户组
$ sudo usermod -G sftp_user -s /bin/false jail

# 创建特权用户,强制不创建用户主文件夹
$ sudo adduse -M jinx
$ sudo usermod -a -G ssh_user

# 设置共享目录权限,目录所有者为 jinx 这个特权用户,同时允许 sftp_user 组内的一般用户访问
$ sudo chown jinx:sftp_user /home/sftp/shared

# 设置共享目录的读写权限
$ sudo chmod 770 /home/sftp/shared

修改 SSH 配置

1
$ sudo vim /etc/ssh/sshd_config

在文件末尾添加以下内容

AllowGroups ssh_user sftp_user
Match Group sftp_user
ChrootDirectory /home/sftp
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp

测试

1
2
$ sftp jinx@localhost 
$ sftp jail@localhost
0%