Debian 8开启sftp服务
看到某云的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服务的更多相关文章
- 开启sftp服务日志并限制sftp访问目录
目录导航 目录导航 开启sftp日志 修改sshd_config 修改syslogs 重启服务查看日志 限制sftp用户操作目录 前提说明 1. home目录做根目录 2. 单独创建目录做根目录 方法 ...
- Ubuntu 16.04开启SFTP服务
说明:其实只要安装了SSH服务就已经具备了SFTP功能,这个用普通客户端无法连接,只能用支持SFTP协议的客户端才能连接. FileZilla作为FTP客户端,它也可以连接SFTP,SFTP的监听端口 ...
- Linux 7.5 SSH服务和SFTP服务分离
SFTP是SSH的一部分,SFTP没有单独的守护进程,它必须使用SSHD守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像是一个服务器程序,而更像是一个客户端程序. ...
- Debian GNU Linux服务列表的获取、服务的关闭/开启、服务在启动时是否自己主动执行的生效/失效
/********************************************************************* * Author : Samson * Date ...
- Centos开启telnet/ssh/ftp/sftp服务
Telnet 开启telnet服务步骤: 1. 查看CentOS/Telnet_server版本:#cat /etc/issue, #rpm -qa | grep telnet 2. 安装 ...
- Windows7安装Bitvise开启ssh服务
Windows7安装Bitvise开启ssh服务 by:铁乐猫 在Liunx和windows10上配置SSH服务是一件很容易的事,毕竟系统己经自带了ssh的服务功能. 不过在windows7上可不容易 ...
- Linux 如何开启SFTP
一.SFTP讲解 SFTP 是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法. SFTP 与 FTP有着几乎一样的语法和功能. ...
- linux 启动ftp服务,sftp服务
启动ftp服务:yum install vsftpd 在/etc/rc.d/init.d/目录下:命令 service vsftp start启动ssh服务,sftp服务在/etc/init.d/目录 ...
- Linux之sftp服务
Linux之sftp服务 一.sftp介绍转自:[1]Linux如何开启SFTP https://www.cnblogs.com/xuliangxing/p/7120205.htmlSFTP是Secu ...
随机推荐
- [Usaco2014 Open]Gold Fair Photography(hash)
最近做了usaco2014 open的金组,果然美帝的题还是没有太简单啊QAQ,被每年的月赛骗了QAQ 不过话说官方题解真心棒(虽然英文的啃得好艰难,我英语渣你们别鄙视我= =),标程超级优美QAQ ...
- 从源码看HashMap键值对集合
之前我们看过了两种类型的集合,ArrayList集合和LinkedList集合,两种集合各有优势,我们不具体说了,但是本篇要看的集合可以完成它们完成不了的任务.比如:现有一篇文章,要你统计其中出现了哪 ...
- Linux 下文件操作 shell
删除目录下的所有文件ls *.log | xargs rm -f当前目录所有文件大小的总和ll | awk '{sum += $5}; END {print sum/1048576}'将命令推送到后台 ...
- 每天一个Linux命令(20)--find命令之exec
find 是我们很常用的一个Linux命令,但是我们一般查找出来的额并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec 参数后面跟的是 comm ...
- 怎么理解js的面向对象编程
面向对象的语言有一个标志,即拥有类的概念,抽象实例对象的公共属性与方法,基于类可以创建任意多个实例对象,一般具有封装.继承.多态的特性!但JS中对象与纯面向对象语言中的对象是不同的,ECMA标准定义J ...
- Bat小试牛刀
前天版本发布后同事才发现有点小瑕疵,当然这是前期的设计和测试没到位造成的.撇开这些不说,我想说的是知识面广一点,做起事情来可能更得心应手些. 大致是这样的,由于版本的迭代,导致发布的程序只能清除一部分 ...
- Jquery弹出窗口
今天讲了Jquery的弹出窗口的组成和用法: 先把引用文件的代码写好: // 每个弹窗的标识 var x =0; var idzt = new Array(); var Window = functi ...
- loadrunner入门篇-Analysis 分析器
analysis简介 分析器就是对测试结果数据进行分析的组件,它是LR三大组件之一,保存着大量用来分析性能测试结果的数据图,但并不一定要对每个视图进行分析,可以根据实际情况选择相关的数据视图进行分析, ...
- gitoschina使用入门
1 下载git sudo apt-get install git 2 添加公钥:terminal: ssh-keygen -t rsa -C "git.oschina.net" ...
- wx模块小实例
功能介绍: 查询数据库表数据,提取数据并显示 main.py(执行文件) #coding:gbk __author__ = 'Hito' import querySmscode import wx c ...