基于CentOS 7的SFTP配置

Posted Linux程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于CentOS 7的SFTP配置相关的知识,希望对你有一定的参考价值。

基于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的登录权限
  • 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:使用户rootsftp组成为/sftp/username文件夹的所有者
  • chown username:sftp /sftp/username/files:使用户用户名和/sftp/username/filesftpusers组(用户名所属的组)的所有者

配置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

以上是关于基于CentOS 7的SFTP配置的主要内容,如果未能解决你的问题,请参考以下文章

linux centos 7 如何让新增的普通用户在使用sftp时可以有root哪样全部目录权限?

SFTP服务配置以及命令/代码操作

sftp搭建配置

Centos7配置SFTP服务

centos下配置sftp且限制用户访问目录

Centos 7.4上搭建sftp服务