众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的。下面为SFTP用户权限设置方法。

必要条件:

你的openssh-server版本至少得失4.8p1, 因为配置权限需要版本添加的新配置项ChrootDirectory来完成。

如何查看自己服务器上的ssh版本?大家可以尝试以下命令:

$ ssh -V

具体实施步骤:

1. 我们需要创建一个用户组,专门用于sftp用户

$ groupadd sftpusers

2. 我们创建一个用户test

$ useradd -s /bin/false -G sftpuser test

注意这里我们将test用户的shell设置为/bin/false使他没有登陆shell的权限

3. 编辑 /etc/ssh/sshd_config

找到Subsystem这个配置项,将其修改为

Subsystem sftp internal-sftp

然后再到文件最尾处增加配置设定属于用户组sftpusers的用户都只能访问他们自己的home文件夹

Match Group sftpusers

ChrootDirectory %h

ForceCommand internal-sftp

AllowTcpForwarding no 保存并关闭文件

4. 修改test用户home文件夹的权限,让其属于root用户

chown root ~test

5. 重启sshd服务

$ service sshd restart

6. 测试用户账号

$ ssh test@localhost

连接会被拒绝或者无法登陆

$ sftp tesst@localhost

登陆后你会发现你的账号无法切换到除自己home目录之外的地方的

常见问题:

如果你链接服务器的时候出现下面的提示:

Write failed: Broken pipe

Couldn't read packet: Connection reset by peer

这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。

在Centos 6.6环境使用系统自带的internal-sftp搭建SFTP服务器。

打开命令终端窗口,按以下步骤操作。

0、查看openssh的版本ssh -V

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

1、创建sftp组groupadd sftp

2、创建一个sftp用户,用户名为mysftp,密码为mysftp

修改用户密码和修改Linux用户密码是一样的。

useradd -g sftp -s /bin/false mysftp  //用户名

passwd mysftp  //密码useradd -g sftp -s /bin/false mysftp

passwd mysftp

3、sftp组的用户的home目录统一指定到/data/sftp下,按用户名区分,这里先新建一个mysftp目录,然后指定mysftp的home为/data/sftp/mysftpmkdir -p /data/sftp/mysftpusermod -d /data/sftp/mysftp mysftp

4、配置sshd_config

文本编辑器打开 /etc/ssh/sshd_config

vi /etc/ssh/sshd_config

找到如下这行,用#符号注释掉,大致在文件末尾处。

# Subsystem      sftp    /usr/libexec/openssh/sftp-server

在文件最后面添加如下几行内容,然后保存。Subsystem       sftp    internal-sftp  Match Group sftp  ChrootDirectory /data/sftp/%u  ForceCommand    internal-sftp  AllowTcpForwarding no  X11Forwarding no

5、设定Chroot目录权限chown root:sftp /data/sftp/mysftpchmod 755 /data/sftp/mysftp

6、建立SFTP用户登入后可写入的目录

照上面设置后,在重启sshd服务后,用户mysftp已经可以登录。但使用chroot指定根目录后,根应该是无法写入的,所以要新建一个目录供mysftp上传文件。这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限。命令如下:mkdir /data/sftp/mysftp/upload

chown mysftp:sftp /data/sftp/mysftp/upload

chmod 755 /data/sftp/mysftp/upload

7、修改/etc/selinux/config

文本编辑器打开/etc/selinux/configvi /etc/selinux/config

将文件中的SELINUX=enforcing 修改为 SELINUX=disabled ,然后保存。

在输入命令setenforce 0

8、重启sshd服务

输入命令重启服务。service sshd restart

9、验证sftp环境

用mysftp用户名登录,yes确定,回车输入密码。sftp mysftp@127.0.0.1

显示 sftp> 则sftp搭建成功。

10、使用FileZilla FTP Client连接SFTP服务器

输入主机IP地址、用户名、密码、端口连接SFTP服务器,端口默认为22。

FileZilla FTP Client下载

由于SFTP是SSH的一部分(与传统的FTP没有任何关系),因此,配置SFTP不需要传统的FTP服务器软件。仅需要OpenSSH服务器即可。

$ yum install openssh-server openssl

$ cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

$ vim +132 /etc/ssh/sshd_config

注释掉下面这行

Subsystem      sftp    /usr/libexec/openssh/sftp-server

添加如下几行

Subsystem       sftp    internal-sftp

Match Group sftp

ChrootDirectory /data/sftp/%u

ForceCommand    internal-sftp

AllowTcpForwarding no

X11Forwarding no

解释一下每一行的意思

Subsystem       sftp    internal-sftp

这行指定使用sftp服务使用系统自带的internal-sftp

Match Group sftp

匹配sftp组的用户,如果有多个组用逗号分割

也可以使用“Match User mysftp”匹配用户,多个用户之间也是用逗号分割

ChrootDirectory /data/ftp/%u

用chroot将用户的根目录指定到/data/ftp/%u,%u代表用户名,%h表示用户根目录

另一种写法: ChrootDirectory %h

chroot可以参考:http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/

ForceCommand    internal-sftp

指定sftp命令

AllowTcpForwarding no

X11Forwarding no

禁止用户使用端口转发

建立用户和组

$ mkdir -p /data/sftp/

$ groupadd sftp

$ useradd -m -d /data/sftp/user1 -g sftp -s /sbin/nologin user1

#通过上面这条命令建立的用户,其家目录权限是700,需要改成755才可以正常登陆

$ chmod -R 755 /data/sftp/

$ chown root:sftp /data/sftp/

$ chown root:sftp /data/sftp/user1    #重要

错误的目录权限设定会导致在log中出现”fatal: bad ownership or modesfor chroot directoryXXXXXX”的内容

目录的权限设定有两个要点:

1、由ChrootDirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root

2、由ChrootDirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限(最大权限755)

因为用了chroot,所以/data/sftp/user1属主一定要是root,并且所属组不能有写入权限,如果上传需要写入在/data/sftp/user1下建立可写属主的文件夹供上传使用。

$ mkdir /data/sftp/user1/upload

$ chown -R user1:sftp /data/sftp/user1/upload

===========================================

2015.01.12补充

在Ubuntu 12.04 64bit系统部按如上方法部署好了SFTP,发现无法登陆,后来在/var/log/auth.log中发现了日志:fatal: bad ownership or modes for chroot directory component “/ftpdata/ftp/”;

于是查看了一下/ftpdata/ftp/的权限,发现该目录的属主是ftp。于是立即将属主修改为root,再次登陆就没问题了

请注意,在Ubuntu系统下,“Match Group sftp”及以后的配置项要写在“UsePAM yes”之后,否则同样无法登陆

===========================================

2015.02.03补充

在Ubuntu 12.04 64bit系统部按如上方法部署好了SFTP,发现无法登陆,FileZilla提示:Received unexpected end-of-file from SFTP server;执行/etc/init.d/ssh restart也不行;

经过百度,发现执行一下initctl restart ssh就OK了

1、创建sftp组 :  groupadd sftp

2、创建一个sftp用户,用户名为andy :   useradd -g sftp -s /bin/false andy

3、修改密码:  passwd andy

4、sftp组的用户的home目录统一指定到/data/sftp下:mkdir -p /data/sftp/andy

5、指定andy的home为/data/sftp/andy:usermod -d /data/sftp/andy andy

6、配置sshd_config:  vi /etc/ssh/sshd_config

7、输入/Subsystem搜索到下列内容,然后注释:    # Subsystem sftp /usr/libexec/openssh/sftp-server

8、在文件结尾处添加下面后保存:

Subsystem sftp internal-sftp

Match Group sftp

ChrootDirectory /data/sftp/%u

ForceCommand internal-sftp

AllowTcpForwarding no

X11Forwarding no

9、设定Chroot目录权限:

chown root:sftp /data/sftp/andychmod 755 /data/sftp/andy

10、建立SFTP用户登入后可写入的目录:mkdir /data/sftp/andy/uploadchown andy:sftp /data/sftp/andy/upload  chmod 755 /data/sftp/andy/upload

11、修改:vi /etc/selinux/config#SELINUX=enforcing#改为#SELINUX=disabled

12、输入命令:setenforce 0

13、重启sshd服务:service sshd restart

14、ifcong查询ip,进行登录:sftp andy@192.168.1.200

linux创建sftp服务器,Linux Centos 6.6搭建SFTP服务器相关推荐

  1. 在linux挂载网络驱动器,利用centos 6.6 搭建iscsi服务器并在centos挂载iscsi网络驱动器...

    ################################################################## 搭建iscsi服务器: 参考自:http://www.linuxi ...

  2. 虚拟机安装postfix服务器,CentOS 7 下搭建邮件服务器(bind+postfix+dovecot)

    CentOS 7下搭建邮件服务器 前提环境:CentOS 7虚拟机IP为192.168.43.124 主机名为mail.zxp.com 修改主机名:hostnamectl set-hostname m ...

  3. centos 6.7搭建邮箱服务器

    centos 6.7搭建邮箱服务器 删除系统自带邮件软件包 rpm -qa |grep mailx sendmail rpm -e xxx 安装yum依赖包 sudo yum install -y m ...

  4. 在阿里云服务器windows server 2008r2上面搭建FTP服务器

    在阿里云服务器windows server 2008r2上面搭建FTP服务器 由于今天需要在阿里云服务器上面部署一个FTP服务器,网上找了好多素材,但是大多数讲的是废话!大海捞针般的找到了下面的这个博 ...

  5. 服务器linux centos 7.4 搭建ftp服务器

    此操作是在腾讯云服务器linux centos 7.4 完成搭建ftp服务器 vsftpd 的: 安装 vsftpd $ yum install vsftpd -y 启动 $ service vsft ...

  6. Linux服务篇:CentOS 6.9搭建NTP服务器

    目录 NTP简介: NTP 的层次结构 准备两台Centos系统服务器 Server端: 1)安装NTP服务 2)编辑/etc/ntp.conf 配置文件,添加以下内容 3)启动ntpd服务 4)查看 ...

  7. linux创建定时任务命令,linux下添加定时任务

    linux下添加定时任务 linux下添加定时任务 ### linux下定时执行任务的方法 在LINUX中你应该先输入crontab -e,然后就会有个vi编辑界面,再输入0 3 * * 1 /cle ...

  8. 在阿里云主机上基于CentOS用vsftpd搭建FTP服务器

    最近需要在一台阿里云的云服务器上搭建FTP服务器,在这篇博文中分享一下我们根据实际需求进行的一些配置. ftp软件用的是vsftpd. vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序 ...

  9. git服务器文件同步,使用gitolite搭建git服务器并实现文件的自动备份

    现在搭建git服务器是一件比较简单的事情,有很多现成的工具,个人感觉比较好的是使用GitLab搭建git服务器,搭建完成了只有在电脑的浏览器中输入对应的网址就能看到图形界面,图形界面和github很像 ...

最新文章

  1. shell脚本传递参数,并且判断参数是否为空
  2. 使用C#开发ActiveX控件[Obsolete]
  3. 职称计算机应用能力考试模拟题,2016年职称计算机考试模拟题
  4. python的函数结构_Python学习(四)常见函数及控制结构
  5. 软件工程概论---典型用户和用户场景描述
  6. 冯诺依曼机器人_冯·诺依曼型计算机的五大组成部分是什么?
  7. 统一操作系统 UOS 龙芯版上线
  8. linux怎样删除定时任务,Linux(CentOS)使用定时任务删除Tomcat日志文件
  9. 9月30号后新版CCNA考试要点
  10. 什么是UPS电源系统
  11. 中国最惨创业者的惨痛教训!
  12. LayaAir 音乐与音效
  13. vscode下载python库_如何在vscode中安装python库的方法步骤
  14. 数学知识——高数速查手册
  15. java 继承的写法_Java 类的继承详解
  16. 青少年软件编程(Python)等级考试试卷一级(判断题)2021-9
  17. 小胖子日记之扯淡的生活2
  18. 【转载】23种设计模式及案例整理分享(建议收藏)【ps:方便自己收藏】
  19. @ds实现多数据源切换及解决事务失效问题
  20. USB2.0协议原文阅读笔记

热门文章

  1. 动物和计算机-自组织是悬空的钢丝
  2. 用简单的代码测一测你是否真的了解:Asp.Net中的事件和委托的实现
  3. CentOS7安装ETCD
  4. 2020年前端面试之JS手写代码题合集
  5. Serverless实战 —— ​​​​​​​Laravel + Serverless Framework 快速创建 CMS 内容管理系统
  6. docker-compose.yml配置文件详解
  7. HashMap的扩容机制
  8. Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)
  9. Linux系统学习 八、SSH服务—SSH远程管理服务
  10. 一台服务器搭建部署两个或多个Redis实例