SFTP 配置

今天本来打算研究下怎么在服务器上搭建一个安全的 FTP 服务器的,想来想去还是算了吧,在 SFTP 面前,FTP 就是来逗逼的,直接从 SFTP 下手。

首先呢,SFTP 是工作在 SSH 上的,而SSH是一种提供安全性的协议,这保证了 SFTP 的安全性!

安装 OpenSSH

1
$ sudo apt-get install openssh-server

处理权限问题

1
2
3
4
5
6
7
8
9
10
$ sudo mkdir /home/sftp  sftp的根目录
$ sudo mkdir /home/sftp/shared 共享目录,用于普通用户上传文件
$ sudo addgroup sftp_user 创建一般用户的用户组(---一般用户只能使用SFTP传输文件,无法使用SSH登陆服务器---)方便统一管理一般用户
$ sudo addgroup ssh_user 比一般用户权限高一级的用户的用户组,该组下的用户除了可以使用SFTP传输文件,还可以使用SSH登陆服务器
$ sudo adduser -M jail 创建一般账户,强制不创建用户主文件夹
$ sudo usermod -G sftp_user -s /bin/false jail 将jail这个一般账户加入一般用户的用户组,其中/bin/false是最严格的禁止login选项,一切服务都不能用
$ sudo adduse -M jinx 创建特权用户,强制不创建用户主文件夹
$ sudo usermod -a -G ssh_user jinx 同上,-a表示不从其他用户组移除
$ sudo chown jinx:sftp_user /home/sftp/shared 设置共享目录权限,目录所有者为jinx这个特权用户,同时允许sftp_user组内的一般用户访问
$ 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
$ sudo reboot now 重启,让配置生效

测试

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

enjoy it now! thanks for you read!

0%