参考 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. 用map函数来完成Python并行任务的简单示例

    众所周知,Python的并行处理能力很不理想.我认为如果不考虑线程和GIL的标准参数(它们大多是合法的),其原因不是因为技术不到位,而是我们的使用方法不恰当.大多数关于Python线程和多进程的教材虽 ...

  2. 15-Call to your teacher(有向图的连通判断)

    链接:https://www.nowcoder.net/acm/contest/76/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...

  3. 3d点云与cad模型

    https://stackoverflow.com/questions/19000096/match-3d-point-cloud-to-cad-model

  4. Linux网络配置之虚拟网卡的配置(Red Hat 6.5)

    怎么查看当前的网络状态,这里就不着重描述,用ifconfig命令就可以.我们直接进入主题. red hat系统中的网卡配置在这个目录中:/etc/sysconfig/network-scripts 1 ...

  5. Spring.net 在aps.net Web的配置复习

    1.引入程序集Spring.Core,CommonLogging,Spring.Web 2.Web.Config的配置 <?xml version="1.0" encodin ...

  6. SpringIOC的理解

    http://www.cnblogs.com/ITtangtang/p/3978349.html---IOC http://blog.csdn.net/fighterandknight/article ...

  7. 3.3.7 跳表 SkipList

    一.前言 concurrentHashMap与ConcurrentSkipListMap性能测试 在4线程1.6万数据的条件下,ConcurrentHashMap 存取速度是ConcurrentSki ...

  8. MP3 Lame 转换 参数 设置(转)

    我们在对音频格式的转换中,打交道最多的就是MP3了.如果你能彻底玩转MP3,那么对你的音频创作和对其他音频格式的掌握会有很大的帮助.下面我们给大家介绍MP3制作软件:LAME 要制作出高音质的MP3靠 ...

  9. Gym 101190H Hard Refactoring (模拟坑题)

    题意:给定 n 个区间,让你进行合并,问你最后的区间是,如果是空集,输出 false 如果区间是是 [-32768,32767] ,则是true. 析:进行区间合并,要注意,如果是 x >= 0 ...

  10. element onclick 动态创建元素并绑定onclick事件

    <html> <head> <meta charset="UTF-8"> <title>b</title> <sc ...