为web项目搭建sftp服务器
来源:互联网 发布:淘宝有客服电话 编辑:程序博客网 时间:2024/06/07 09:23
一.目标:为基于nginx多web项目搭建sftp服务器,可以让公司内部员工自己部署项目到指定目录(其活动也基于此指定目录)
二.条件:
1.系统:CentOS 7.x x86_64
2.ssh 必须大于v4.8
3.web目录结构
/data
├── lost+found
├── nginx//存放nginx相关配置文件
│ └── vhosts
│ └── default.conf
├── sftp //存放sftp相关配置文件
│ └── web_sftp.conf
└── web //存放web项目
└── x1.ttp2016.com
├── Code
│ └── index.php
└── info
三.需求分析:
1、线上服务器对安全要求高些,sftp比ftp更安全
2、线上服务器需要对用户需要控制,只能让用户在自己的home目录下活动
3、用户只能使用sftp,不能ssh到机器进行操作
过程:
1.查看ssh的版本,需大于4.8版本
<span style="white-space:pre"></span># ssh -V
2.创建sftp组,利于添加多用户
<span style="line-height: 22.4px;"><span style="white-space: pre;"></span># groupadd sftp</span>
3.创建第一个sftp用户ttp2016
<span style="white-space:pre"></span># useradd -g sftp -s /bin/false ttp2016<span style="white-space:pre"></span># passwd ttp2016<span style="white-space:pre"></span>//密码为ttp2010
<span style="white-space:pre"></span># mkdir -p /data/web/x1.ttp2016.com<span style="white-space:pre"></span># usermod -d /data/web/x1.ttp2016.com ttp2016
5.配置sshd_config
<span style="white-space:pre"></span># vi /etc/ssh/sshd_config<span style="white-space:pre"></span>//找到这行并注释掉<span style="white-space:pre"></span>Subsystemsftpinternal-sftp
//添加如下一行
<span style="white-space:pre"></span>include /data/sftp/web_sftp.conf
//编辑web_sftp.conf文件
<span style="white-space:pre"></span># vi /data/sftp/web_sftp.conf
//添加如下
//基于用户组sftp的控制
<span style="white-space:pre"></span>Subsystem sftp internal-sftp <span style="white-space:pre"></span>Match Group sftp <span style="white-space:pre"></span>ChrootDirectory /data/web <span style="white-space:pre"></span>ForceCommand internal-sftp <span style="white-space:pre"></span>AllowTcpForwarding no <span style="white-space:pre"></span>X11Forwarding no
//基于用户ttp2016的控制
<span style="white-space:pre"></span>Subsystem sftp internal-sftp <span style="white-space:pre"></span>Match User ttp2016 <span style="white-space:pre"></span>ChrootDirectory /data/web/x2.ttp2016.com或/data/web/%u <span style="white-space:pre"></span>ForceCommand internal-sftp <span style="white-space:pre"></span>AllowTcpForwarding no <span style="white-space:pre"></span>X11Forwarding no
具体意思
Subsystem sftp internal-sftp
这行指定使用sftp服务使用系统自带的internal-sftp
Match Group sftp
这行用来匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割
匹配用户
Match User mysftp
这样就可以匹配用户了,多个用户名之间也是用逗号分割,但我们这里按组匹配更灵活和方便
ChrootDirectory /data/web/%u
用chroot将用户的根目录指定到/data/web/%u,%u代表用户名,这样用户就只能在/data/web/%u下活动
ForceCommand internal-sftp
指定sftp命令
AllowTcpForwarding no
X11Forwarding no
这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
6.设定Chroot目录访问权限
<span style="white-space:pre"></span># chown root:sftp -R -v /data/web/x1.ttp2016.com <span style="white-space:pre"></span># chmod 755 -R -v /data/web/x1.ttp2016.com
目录的权限设定有两个要点:
1、由ChrootDirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root
2、由ChrootDirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限
所以遵循以上两个原则
1)我们将/data/web/x1.ttp2016.com的所有者设置为了root,所有组设置为sftp
2)我们将/data/web/x1.ttp2016.com的权限设置为755,所有者root有写入权限,而所有组sftp无写入权限
7.建立sftp用户登录后可写入的目录照上面设置后,在重启sshd服务后,用户mysftp已经可以登录,但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个目录供mysftp上传文件。这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限
<span style="white-space:pre"></span># mkdir /data/web/x1.ttp2016.com/Code # chown ttp2016:sftp -R -v /data/web/x1.ttp2016.com/Code # chmod 755 -R -v /data/web/x1.ttp2016.com/Code
8.重启sshd服务
<span style="white-space:pre"></span># service sshd restart
9.关闭SELINUX
<span style="white-space:pre"></span># vi /etc/selinux/config //修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。或者 # setenforce 0
至此,ttp2016用户将只能在x2.ttp2016.com里面活动,并且只能操作Code文件夹
1 0
- 为web项目搭建sftp服务器
- Sftp服务器搭建手册
- linux搭建sftp服务器
- LINUX 搭建sftp 服务器
- docker搭建sftp服务器
- 搭建sftp服务器
- sftp服务器搭建
- Centos搭建SFTP服务器
- Ubuntu搭建SFtp服务器
- ubuntu搭建sftp服务器
- 为Unity搭建Web服务器
- Linux Centos 搭建SFTP服务器
- Linux Centos 搭建SFTP服务器
- 为iOS项目搭建Travis CI服务器
- SFTP安全传输 客户端 + 服务器 搭建
- SFTP安全传输 客户端 + 服务器 搭建
- windows 上搭建 sftp 服务器 --freesshd
- Linux Centos 6.6搭建SFTP服务器
- Objective-C-iOS UIScrollView UIPageControl 的用法详解
- lua math函数库
- materialdesign之tablayout的用法
- 无人驾驶车核心算法 — SLAM
- MongoDB的数据复制和数据切片
- 为web项目搭建sftp服务器
- 一些项目遇到的问题
- 取消应用程序崩溃后弹出的对话框
- 怎样将网络机顶盒usb调试模式打开
- Windows如何上传项目到github
- React之Mixin
- 欢迎使用Markdown编辑器写博客
- 根据判断PC浏览器类型和手机屏幕像素自动调用不同CSS
- xUtils 3.3.36 post Json数据