[原]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 770 www
chown sftp:sftp www
cd ..
chmod 755 sftp
chown root:root sftp
  • 设置掩码,以便外部程序能够使用

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

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

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

usermod -G sftp www-data

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

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

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

时间: 2024-12-09 21:19:08

[原]Debian 8开启sftp服务的相关文章

Solaris 10 开启/关闭SFTP服务、SSH服务

   Solaris 10本身就自带sftp客户端及sftp服务端,其中,sftp服务端是使用sshd来实现SSH文件传输协议的.缺省情况下,Solaris 10的ssh服务是开启的,sftp服务也是开启的,所有本地unix用户账户都可以使用sftp登录本机.    缺省ssh服务是开启的,如果要禁止ssh服务,可以使用"svcadm disable svc:/network/ssh:default"命令.    如果ssh服务是未开启,开启ssh服务可以使用"svcadm 

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

/*********************************************************************  * Author  : Samson  * Date    : 03/19/2015  * Test platform:  *              gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2  *              GNU bash, 4.3.11(1)-release (x86_64-pc-linux-gnu)

Linux 搭建Sftp服务并进行权限设置

一.最近接到一个项目组的需求搭建文件服务器,需求如下 1.用户:amovs.upload.download 2.组:amovs.dataload.download 3.具体需求是upload和download的家目录都为同一个目录dataload 4.upload能上传也就是能读能写.download用户只能下载 5.amovs因需要进行批量自动化删除日志等操作,所以对于dataload目录权限需要读.写权限 6.并且upload和download只能使用sftp软件上传和下载文件使用,不能作为

原 Debian设置开机自动启动与关闭

发表于1年前(2013-01-08 13:01)   阅读(2380) | 评论(0) 2人收藏此文章, 我要收藏 赞0 开机自动启动 update-rc.d chkconfig 熟悉debian系统的应该经常会用到update-rc.d这个命令,它与redhat里的chkconfig 是相似的管理服务的工具,首先来看下这个命令的使用方法: ? 1 2 3 4 5 6 [email protected]:etc# update-rc.d --help usage: update-rc.d [-n

linux 启动ftp服务,sftp服务

启动ftp服务:yum install vsftpd 在/etc/rc.d/init.d/目录下:命令 service vsftp start启动ssh服务,sftp服务在/etc/init.d/目录下: 命令 /etc/init.d/sshd start 注意这里需要在绝对路径下执行sshd start 开启root可以通过ftp软件连接的功能:默认有一些用户是不能通过ftp连接服务器的,比如root.如果需要开启这些用户,就需要做一些修改才可以.(1)编辑/etc/vsftp/ftpuser

Linux如何开启SFTP

一.SFTP讲解 SFTP 是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法. SFTP 与 FTP有着几乎一样的语法和功能. SFTP 为 SSH的一部分,是一种传输档案至 Blogger 伺服器的安全方式.其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol的安全文件传输子系统,SFTP本身没 有单独的守护进程,它必须使用SSHD守护进程(端口号默认是22)来完成

linux支持FTP和SFTP服务

[摘要] 需求要求,环境在原先SFTP基础上,开启FTP服务,保证文件可以通过两种方式均下载. [开启FTP服务步骤] [测试SFTP和FTP] 待补充,周末完成. 原文地址:https://www.cnblogs.com/likailun/p/9124293.html

win10下Linux子系统开启ssh服务

原文地址:http://whosmall.com/?post=430 本文标签: 开启ssh Linux子系统 虽然win10自带的bash功能已经很丰富,操作也简便,不过习惯了用xshell, 还是选择用xshell来操作 直接用xshell连接127.0.0.1 端口22 提示连接失败.说明应该是ubuntu的sshd服务设置有问题: 解决方案如下: 安装ssh apt-get install openssh-server 备份sshd配置文件 sudo cp /etc/ssh/sshd_c

搭建sftp服务+nginx代理

在公司,经常会用到sftp服务,比如两个公司对接生产项目,其中一方,要在sftp上上传pdf文件,另一方公司要在sftp服务器上用nginx代理直接下载pdf文件.下面就说说我在实际中应用到的sftp服务+nginx代理的配置方法: 一.环境: 192.168.16.12     centos6.5 在Centos 6.5环境使用系统自带的internal-sftp搭建SFTP服务器. 二.查看版本 查看openssh的版本,使用ssh -V 命令来查看openssh的版本,版本必须大于4.8p