CentOS7+Nginx 配置SFTP文件服务器

一、前言

sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

二、SFTP搭建

2.1 查看openssl的版本

使用ssh –V命令来查看openssh的版本,版本必须大于4.8p1,低于这个版本需要升级。

ssh -V

2.2 创建sftp组

groupadd sftp

2.3 创建用户

-s 禁止用户ssh登陆
-G 加入sftp 用户组

useradd -G sftp -s /sbin/nologin  【username 】

2.4 创建密码

passwd 【username】

2.5 修改sshd配置文件

如果没安装vim命令可以安装下,yum -y install vim 不安装直接用vi命令

vim /etc/ssh/sshd_config
#下面这行注释掉
#Subsystem sftp /usr/libexec/openssh/sftp-server
# 最后加入
Subsystem sftp internal-sftp
# 以下需要添加在文件的最下方,否则root用户无法登录
Match Group sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp

① Subsystem sftp internal-sftp:配置一个外部子系统(例如,一个文件传输守护进程)。仅用于SSH-2协议。值是一个子系###统的名字和对应的命令行(含选项和参数)。比如"sftp /usr/libexec/openssh/sftp-server"。,###这里配置为内部的;
② Match Group sftp :限定只有sftp组的才能访问;
③ ChrootDirectory %h:只能访问默认的用户目录(自己的目录),例如 /home/test;
④ ForceCommand internal-sftp:强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登录###shell执行(shell -c)。这可以应用于 shell 、命令、子系统的完成,通常用于 Match 块中。###这个命令最初是在客户端通过 SSH_ORIGINAL_COMMAND 环境变量来支持的;
⑤ AllowTcpForwarding no :是否允许TCP转发,默认值为"yes", 禁止TCP转发并不能增强安全性,除非禁止了用户###对shell的访问,因为用户可以安装他们自己的转发器;
⑥ X11Forwarding no :是否允许进行 X11 转发。默认值是"no",设为"yes"表示允许。如果允许X11转发并且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。
如果启用了 UseLogin ,那么X11转发将被自动禁止;

2.6 配置SFTP账号访问路径

chown root:sftp /home/【username 】
chgrp -R sftp /home/【username 】
chmod -R 755 /home/【username 】
#设置用户可以上传的目录,改目录下允许用户上传删除修改文件及文件夹
mkdir /home/【username 】/upload
chown -R 【username 】:sftp /home/【username 】/upload
chmod -R 755 /home/【username 】/upload

2.7 重启sshd服务

systemctl restart sshd

三、Nginx配置

Nginx安装请移步到:https://blog.csdn.net/dsen726/article/details/79637519

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            #root   html;
            #index  index.html index.htm;
            root  /home/mysftp/upload;
            index  index.html index.htm;
            autoindex on;  #显示索引
            autoindex_exact_size off; #显示大小
            autoindex_localtime on; #显示时间
        }

测试结果

CentOS7+Nginx 配置SFTP文件服务器_第1张图片
CentOS7+Nginx 配置SFTP文件服务器_第2张图片

你可能感兴趣的:(CentOS7+Nginx 配置SFTP文件服务器)