参考 http://blog.csdn.net/xinxin19881112/article/details/46831311

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

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

0、查看openssh的版本

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

1、创建sftp组

groupadd sftp  

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

useradd -g sftp -s /bin/false mysftp  //用户名
passwd mysftp //密码,修改用户密码和修改Linux用户密码是一样的。

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

mkdir -p /data/sftp/mysftp  

usermod -d /data/sftp/mysftp mysftp  #这一步不做也可以,ssh配置文件中设置根目录后会覆盖这里的设置

4、配置sshd_config

 vim /etc/ssh/sshd_config

找到并注释掉下面一行,大致在文件末尾处。
# Subsystem sftp /usr/libexec/openssh/sftp-server 在文件最后面添加如下几行内容,然后保存。 Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/%u # %u代表用户名,等价/data/sftp/mysftp
ForceCommand internal-sftp #指定sftp命令
AllowTcpForwarding no #下面两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
X11Forwarding no

5、设定Chroot目录权限

chown root:sftp /data/sftp/mysftp  

chmod  /data/sftp/mysftp 

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

照上面设置后,在重启sshd服务后,用户mysftp已经可以登录。

但使用chroot指定根目录后,根应该是无法上传文件的,但是可以下载。

所以要新建一个目录供mysftp上传文件,这个目录所有者为mysftp,所有组为sftp,所有者有写入权限,而所有组无写入权限。命令如下:

mkdir /data/sftp/mysftp/upload  

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

chmod  /data/sftp/mysftp/upload  

7、修改/etc/selinux/config

vim /etc/selinux/config  

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

输入命令setenforce    #即时生效

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下载

http://download.csdn.net/detail/xinxin19881112/8887755

 此方法也可用在ubuntu系统上,在下面的ubuntu中介绍了另外一种方法。

二.  在ubuntu上搭建sftp

需求说明:
在服务器上开通SFTP文件服务,允许某些用户上传及下载文件。但是这些用户只能使用SFTP传输文件,不能使用SSH终端访问服务器,并且SFTP不能访问系统文件(即所谓的“Jail(监狱)”)。
系统管理员则既能使用SFTP传输文件,也能使用SSH远程管理服务器。
 
为了便于讨论,我将允许sftp-users用户组内的用户使用SFTP,但不允许使用SSH Shell,且该组用户将被"监狱"(修改系统根目录),并且在sftp-users组内创建一个用户“alice”。
而我将允许ssh-users使用SFTP以及SSH。
系统管理员的账户名为admin。
 
1,如果还没有安装OpenSSH服务器,先安装它
sudo apt-get install openssh-server
2. 为SFTP访问创建用户组,便于管理权限
sudo addgroup sftp-users
3,创建SFTP用户,并配置相应权限
sudo adduser alice
sudo usermod -G sftp-users -s /bin/false alice #将alice从所有其他用户组中移除并加入到sftp-users组,并且关闭其Shell访问
4,创建SSH用户组,并把管理员加入到该组(注意usermod中的-a参数的意思是不从其他用户组用移除)
sudo addgroup ssh-users
sudo usermod -a -G ssh-users admin
5,准备“监狱”的根目录及共享目录
“监狱”的根目录必须满足以下要求:该目录的用户属主必须是root,并且该目录的上级的每一级目录的属主也必须是root,其他任何用户都不能拥有写入权限。
因此,为了让SFTP用户能够上传文件,还必须在“监狱”根目录下再创建一个普通用户能够写入的共享文件目录。
为了便于管理员通过SFTP管理上传的文件,我把这个共享文件目录配置为:由admin所有,允许sftp-users读写。这样,管理员和SFTP用户组成员就都能读写这个目录了。
sudo mkdir /home/sftp_root  #这里用sudo,相当于 /home/sftp_root所属为root:root,权限默认为755
sudo mkdir /home/sftp_root/shared
sudo chown admin:sftp-users /home/sftp_root/shared
sudo chmod /home/sftp_root/shared

注意:第4,5步的admin用户可以改为任意其他用户,包括root用户
6,修改SSH配置文件
sudo vim /etc/ssh/sshd_config
在sshd_config文件的最后,添加以下内容:
AllowGroups ssh-users sftp-users
Match Group sftp-users
ChrootDirectory /home/sftp_root
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp
这些内容的意思是:
只允许ssh-uers及sftp-users通过SSH访问系统;
针对sftp-users用户,额外增加一些设置:
将“/home/sftp_root”设置为该组用户的系统根目录(因此它们将不能访问该目录之外的其他系统文件);
禁止TCP Forwarding和X11 Forwarding;
强制该组用户仅仅使用SFTP。
 
如果需要进一步了解细节,可以使用“man sshd_config”命令。这样设置之后,SSH用户组可以访问SSH,并且不受其他限制;而SFTP用户组仅能使用SFTP进行访问,而且被关进监狱目录。
 
7,重启系统以便使新配置生效
sudo reboot now

注意:

1)组sftp-users是允许使用sftp的用户组; ssh-users是允许进行ssh连接的用户组,

2)因为我们设置了usermod -a -G ssh-users admin,因此现在只能admin用户远程ssh连接,

3)如果想让之前的普通用户远程连接ssh,比如axinfu用户,需要把它加入ssh-users组中,usermod -aG ssh-users axinfu

4)从一个组中删除成员,命令是gpasswd wheel -d test,表示从wheel组成删除成员test

centos6和ubuntu14搭建sftp的更多相关文章

  1. 搭建sftp服务+nginx代理

    在公司,经常会用到sftp服务,比如两个公司对接生产项目,其中一方,要在sftp上上传pdf文件,另一方公司要在sftp服务器上用nginx代理直接下载pdf文件.下面就说说我在实际中应用到的sftp ...

  2. Linux Centos 6.6搭建SFTP服务器

    Linux Centos 6.6搭建SFTP服务器 在Centos 6.6环境使用系统自带的internal-sftp搭建SFTP服务器. 打开命令终端窗口,按以下步骤操作. 0.查看openssh的 ...

  3. Linux - CentOS6.5服务器搭建与初始化配置详解(下)

    传送带:Linux - CentOS6.5服务器搭建与初始化配置详解(上) 继续接着上面的安装,安装完后会出现下面界面 点击reboot重启 重启后可以看到下面的tty终端界面  因为这就是最小化安装 ...

  4. CENTOS6.6上搭建单实例ORACLE12C

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 自己在centos6.6上搭建的单实例oracle12c 由 ...

  5. freeSSHD在windows环境下搭建SFTP服务器

    freeSSHD在windows环境下搭建SFTP服务器 0 建议现在windows环境下安装cygwin,否则在windows环境下cmd模式使用不了sftp去连接,可以利用win scp去测试连接 ...

  6. CentOS7.5 下搭建SFTP

    CentOS7.5 下搭建SFTP Linux 创建用户组 groupadd sftp 创建用户test useradd -G sftp -s /sbin/nologin test -s 禁止用户ss ...

  7. Linux学习之CentOS(一)--CentOS6.4环境搭建

    Linux学习之CentOS(一)--CentOS6.4环境搭建http://www.cnblogs.com/xiaoluo501395377/archive/2013/03/31/CentOs.ht ...

  8. Centos6.8下搭建SVN服务器

    1.Centos6.8下搭建SVN服务器 Subversion是一个自由,开源的版本控制系统.Subversion将文件存放在中心版本库里.这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一 ...

  9. 搭建SFTP服务器,允许一个或多个用户拥有一个或多个目录的rwx权限

    1.引言 sftp可以为传输文件提供一种安全的网络的加密方法.sftp 与 ftp 有着几乎一样的语法和功能.SFTP 为 SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式.其实 ...

随机推荐

  1. rocketmq--消息的产生(普通消息)

    与消息发送紧密相关的几行代码: 1. DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName") ...

  2. Nginx 相关介绍(Nginx是什么?能干嘛?个人觉得写得比较好的文章,转载过来)

    Nginx的产生 没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符(Unifor ...

  3. Python3 获取RDS slowlog+微信接口报警

    一.功能说明 二.代码详情 1.通过阿里sdk获取慢查询列表,格式化. 2.企业微信报警接口 3.deamon #!/usr/bin/python #-*- conding:utf-8 -*- fro ...

  4. mac上,sudo启动IDEA

    cd /Applications/IntelliJ IDEA 14.app/Contents/MacOS sudo ./idea # 就是这个启动,我一开始没有找到这个启动项...这样你就能运行80端 ...

  5. 设计模式(java)--Bridge模式之蜡笔与毛笔的故事

    转自:吕震宇 http://www.cnblogs.com/zhenyulu/articles/67016.html#!comments 我想大家小时候都有用蜡笔画画的经历吧.红红绿绿的蜡笔一大盒,根 ...

  6. CircRNA 环化RNA

    2016国自然新秀CircRNA的研究策略和分析  

  7. python json.dumps输出中文问题

    json.dumps 输出的中文是"\u6211\u662f"格式的,输出中文需要指定ensure_ascii=False. json.dumps(actual,ensure_as ...

  8. 弱网测试弱网测试—Network-Emulator-Toolkit

    原文:https://blog.csdn.net/no1mwb/article/details/53638681

  9. Spring MVC 基本配制

    WEB.XML 文件中的配制: <?xml version="1.0" encoding="UTF-8"?> <web-app id=&quo ...

  10. sql获取表的所有字段及属性

    select c.name as name,t.name as type ,convert(bit,c.IsNullable) as isNULL , from sysobjects where xt ...