基于CentOS 7的SFTP配置
简介
SFTP
通过SSH
在计算机之前建立安全的链接用作文件传输;通过SFTP
可以很方便的将文件传输到你的服务器。
本文将在CentOS 7
上通过OPENSSH
配置SFTP
服务。
创建用户组
Linux
中的所有的用户都属于一个(或多个)组,出于安全考虑,为了使批量管理SFTP
账户更加容易,需要创建一个SFTP
用户的组:
groupadd sftp
可以根据需要随意调整成符合你要求的组名
创建用户
通过以下命令创建用于sftp
登录时的用户,并将/sftp
目录设置为该用户的家目录
useradd -g sftp -d /sftp -s /sbin/nologin username
说明:
- useradd:添加一个用户
- -g sftp:将新用户添加到
sftp
组(即上一步的sftp
组) - -d /sftp:将
/sftp
设置为该用户的家目录 - -s /sbin/nologin:用户获得
shell
程序的访问权限/sbin/nologin
,换句话说:不能通过ssh
的登录权限
- -g sftp:将新用户添加到
- passwd用户名:设置新用户的密码
创建传输的目录
为新用户创建一个文件夹,通过该用户可以将文件上传到该文件夹
mkdir -p /sftp/username/files
说明:
- 此处的
username
就是上一步中创建的用户名 - -p:可以直接创建多级目录
- 也可以将此处的
/sftp/username/files
更改到其他位置,例如:- 如果你在
/var/www/example.com/public_html
中托管网站,则可以在此处使用/var/www/example.com/public_html
- 假如想在主目录中添加一个
SFTP
文件夹,可以将/sftp
改成/home/username/sftp
,该用户username
必须存在
- 如果你在
调整文件夹的权限
为了确保sftp
的用户最终只有在/sftp/username/files
的操作权限,但是在上层的目录没有操作权限,还需要以下操作:
chmod 500 /sftp
chmod 700 /sftp/username/files
chown root:sftp /sftp/username
chown username:sftp /sftp/username/files
说明:
chmod 500 /sftp
:仅授予/sftp
所有者对/sftp
文件夹的读取和执行权限。chmod 700 /sftp
:仅授予/sftp/username/files
所有者对/sftp/username/files
文件夹的读取,写入和执行权限chown root:sftp /sftp/username
:使用户root
和sftp
组成为/sftp/username
文件夹的所有者chown username:sftp /sftp/username/files
:使用户用户名和/sftp/username/files
的ftpusers
组(用户名所属的组)的所有者
配置sshd_config
vim /etc/ssh/sshd_config
在末尾添加下面内容:
AllowGroups sftp sshd
Match Group sftp
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
sftp组的所有用户都会被定位到/sftp/%u
,此处的%u
就是登录的用户名
重启sshd服务
systemctl reload sshd