看到某云的CDN居然是使用ftp这种早该淘汰的协议,不禁有些吐槽。ftp曾经作为互联网上最重要的协议,但漫长使用过程中体现出的各种缺点,已不适合再使用。其中最致命的问题就是明文传输用户密码。建议使用这种CDN时,最好长个心眼关闭ftp管理方式,直接使用回源透传的模式。

不过某些情况下,不适合使用svn、git之类的方式来传输文件时(一般是不需要版本管理的二进制文件),最合适的选择就是ftp这种类型的协议。ftp的替代品也不少,如sftp、ftps、webdav。我个人最看好的是webdav,但是鉴于几乎所有的linux服务器都安装了ssh,使用sftp可以更省资源,不需要开启额外的进程和端口。接下来记录sftp的设置过程,系统环境基于debian 8。

我的需求是这样的:设置一个sftp目录,可以通过sftp上传/下载,同时nginx也需要能够读写,以方便我上传/更新web程序,以及下载web服务器的日志。

操作流程如下:

  • 添加sftp账号

首先建立好sftp的目录:

mkdir /var/sftp

创建用于sftp的用户和用户组

groupadd sftp
useradd -g sftp -d /var/sftp -s /bin/false sftp
passwd sftp
# 设置密码
  • 通过chroot限制sftp服务的访问目录

编辑ssh的配置文件,设置chroot目录,把sftp限制在他的用户目录下(%h代表用户目录),并且禁止掉其他不需要的ssh权限

nano /etc/ssh/sshd_config
# 找到Subsystem,注释掉原来的那行
#Subsystem sftp /usr/lib/openssh/sftp-server
# 再添加下面的新行
Subsystem sftp internal-sftp
# 限制sftp的目录,让他看不到不应该看到的东西
Match Group sftp
ChrootDirectory %h
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp

创建上传目录并设置权限,ChrootDirectory的目录和其所有上层目录的所有者必须是root,并且权限不能大于755

cd /var/sftp
mkdir www
chmod www
chown sftp:sftp www
cd ..
chmod sftp
chown root:root sftp
  • 设置掩码,以便外部程序能够使用

sftp上传过程中创建的目录和文件所有者固定为sftp:sftp,权限默认为755,其他用户只能读不能写。这里我们需要修改为可以被组成员读写(当然了解原理后你也可以图省事,直接允许所有用户读写)

nano /etc/pam.d/sshd
# 在文件最末尾添加
session optional pam_umask.so umask= # 也可以是0002

给nginx使用的用户添加用户组sftp,我这里是www-data

usermod -G sftp www-data

还原shell中的默认umask,避免被sftp覆盖

nano /etc/profile
# 在文件最末尾添加
umask

到此,我们已经顺利的架设了sftp服务,可以使用各种流行的ftp客户端,比如FileZilla、FlashFXP安逸的上传/下载文件啦。

Debian 8开启sftp服务的更多相关文章

  1. 开启sftp服务日志并限制sftp访问目录

    目录导航 目录导航 开启sftp日志 修改sshd_config 修改syslogs 重启服务查看日志 限制sftp用户操作目录 前提说明 1. home目录做根目录 2. 单独创建目录做根目录 方法 ...

  2. Ubuntu 16.04开启SFTP服务

    说明:其实只要安装了SSH服务就已经具备了SFTP功能,这个用普通客户端无法连接,只能用支持SFTP协议的客户端才能连接. FileZilla作为FTP客户端,它也可以连接SFTP,SFTP的监听端口 ...

  3. Linux 7.5 SSH服务和SFTP服务分离

    SFTP是SSH的一部分,SFTP没有单独的守护进程,它必须使用SSHD守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像是一个服务器程序,而更像是一个客户端程序. ...

  4. Debian GNU Linux服务列表的获取、服务的关闭/开启、服务在启动时是否自己主动执行的生效/失效

    /*********************************************************************  * Author  : Samson  * Date   ...

  5. Centos开启telnet/ssh/ftp/sftp服务

    Telnet 开启telnet服务步骤: 1.   查看CentOS/Telnet_server版本:#cat /etc/issue,   #rpm -qa | grep telnet 2.   安装 ...

  6. Windows7安装Bitvise开启ssh服务

    Windows7安装Bitvise开启ssh服务 by:铁乐猫 在Liunx和windows10上配置SSH服务是一件很容易的事,毕竟系统己经自带了ssh的服务功能. 不过在windows7上可不容易 ...

  7. Linux 如何开启SFTP

    一.SFTP讲解 SFTP 是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法. SFTP 与 FTP有着几乎一样的语法和功能. ...

  8. linux 启动ftp服务,sftp服务

    启动ftp服务:yum install vsftpd 在/etc/rc.d/init.d/目录下:命令 service vsftp start启动ssh服务,sftp服务在/etc/init.d/目录 ...

  9. Linux之sftp服务

    Linux之sftp服务 一.sftp介绍转自:[1]Linux如何开启SFTP https://www.cnblogs.com/xuliangxing/p/7120205.htmlSFTP是Secu ...

随机推荐

  1. Top命名的一些简单用法

    1. Top命令的显示 top 2. 按(Shift + O)是为了选择列进行排序.例如:按a是为了通过PID进行排序.然后按任意键返回主窗口. 3. 显示特定用户的进程. top -u hadoop ...

  2. c++针对数据库,文件的操作总结(原始)

    1.将文件保存到sqlserver数据库的相关操作: Update t1 .txt’, SINGLE_BLOB ) Select convert( varchar(), data ) 注:fileTy ...

  3. canvas画时钟,重拾乐趣!

    canvas时钟--效果图 一.先来简单介绍画时钟需要的canvas知识 1.在HTML页面中添加canvas元素,必须定义canvas元素的id属性值以便接下来的调用. HTML代码: <ca ...

  4. JS分两种数据类型,你都知道吗?

    大牛请无视此篇! JS主要分基本数据类型和引用数据类型,这两者区别可大了,此篇看完必有长进,下面进入正题 首先我们看下什么是基本数据类型(概念我就不说了,直接上代码): var i = 10: var ...

  5. cura-engine学习(3)

    目前,我们还在函数prepareModel中徘徊,因为这函数实在是太长了,近乎包含了整个数据处理过程.通过前面两篇,几何图形已经被导入到内存中,并且由一个simplemodel变成了一个optimiz ...

  6. java中 i = i++ 的结果

    昨天看到下面这段代码,分享出来给大家看看,大家也可以讨论讨论. int i = 0; i = i++; System.out.println("i的值是 "+i); 根据我们通常所 ...

  7. web前端升级之路

    web前端菜鸟如何升级到大神(转载) 标签:web前端 随着互联网的发展速度迅猛,web前端工程师越来越火热,想学习 Web前端开发 吗 ? 若想成为web前端工程师需要掌握哪些知识?今天小编总结了成 ...

  8. Java日常总结之LinkedList、ArrayList的效率分析

    前言: 在我们平常开发中难免会用到List集合来存储数据,一般都会选择ArrayList和LinkedList,以前只是大致知道ArrayList查询效率高LinkedList插入删除效率高,今天来实 ...

  9. java中的ConcurrentModificationException异常

    先看这样一段代码: List<String> list = new ArrayList<String>(); list.add("1"); list.add ...

  10. laravel初次学习总结及一些细节

    最近学习了laravel,先简单谈谈学习的感受吧 刚开始一周多一点的时间先把laravel的开发文档看了一遍,,感觉刚开始接触时的感觉laravel的目录与thinkphp又不一样,它们的渲染模板的方 ...