Sftp搭建与配置参考

1. 介绍

sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

2. sftp搭建

2.1查看openssl的版本

ssh -V

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

2.2创建sftp组

groupadd sftp

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

useradd –g sftp –s /bin/false mysftp //该用户不能通过sshd登陆到系统

passwd mysftp

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

mkdir -p /data/sftp/mysftp

usermod –d /data/sftp/mysftp mysftp

2.4配置sshd_config

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

vi /etc/ssh/sshd_config

找到如下这行,用#符号注释掉。

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

在文件最后面添加如下几行内容,然后保存。

Subsystem       sftp    internal-sftp

###配置一个外部子系统(例如,一个文件传输守护进程)。仅用于SSH-2协议。值是一个子系###统的名字和对应的命令行(含选项和参数)。比如"sftp /usr/libexec/openssh/sftp-server"。,###这里配置为内部的

Match Group sftp

#限定只有sftp组的才能访问

ChrootDirectory /data/sftp/%u

###设定属于用户组sftp的用户访问的根文件夹

ForceCommand    internal-sftp

###强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登录###shell执行(shell -c)。这可以应用于 shell 、命令、子系统的完成,通常用于 Match 块中。###这个命令最初是在客户端通过 SSH_ORIGINAL_COMMAND 环境变量来支持的。

AllowTcpForwarding no

###是否允许TCP转发,默认值为"yes", 禁止TCP转发并不能增强安全性,除非禁止了用户###对shell的访问,因为用户可以安装他们自己的转发器。

X11Forwarding no

###是否允许进行 X11 转发。默认值是"no",设为"yes"表示允许。如果允许X11转发并且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。

如果启用了 UseLogin ,那么X11转发将被自动禁止。

2.5设定Chroot目录权限

chown root:sftp /data/sftp/mysftp

chmod 755 /data/sftp/mysftp

2.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

2.7重启sshd服务

service sshd restart

3.附录

3.1sftp参考资料

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

http://www.2cto.com/os/201401/272738.html

http://www.1949idc.com/shownews399.html

3.2 UNIX文件权限详解参考资料

http://blog.csdn.net/astonqa/article/details/8292935###UNIX文件权限详解(尤其是SUID和SGID)参照

3.3setfacl参考资料

http://cn.linux.vbird.org/linux_basic/0410accountmanager_3.php ###鸟哥的讲解非常详细

http://man.linuxde.net/setfacl

http://blog.csdn.net/qwq_qaq/article/details/54882203

Sftp搭建与配置参考的更多相关文章

  1. SFTP 安装与配置

    SFTP 安装与配置 sftp 是 Secure File Transfer Protocol 的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.SFTP 为 SSH 的一部分,由于这种 ...

  2. 总结:Mac前端开发环境的搭建(配置)

    新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...

  3. Hadoop学习笔记—22.Hadoop2.x环境搭建与配置

    自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔 ...

  4. sftp搭建

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

  5. 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

    原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在w ...

  6. Redis Cluster集群搭建与配置

    Redis Cluster是一种服务器sharding分片技术,关于Redis的集群方案应该怎么做,请参考我的另一篇博客http://www.cnblogs.com/xckk/p/6134655.ht ...

  7. 【转】搭建和配置Syncthing发现和中继服务器

    搭建和配置Syncthing发现和中继服务器     折腾借口 Syncthing好是挺好的,但就是同步不给力,公共网络服务其质量参差不齐,网络也说不清.最好的解决方案还是自己搭建发现服务器Synct ...

  8. android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

      android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把 ...

  9. ELK6.0环境搭建及配置

    ELK环境搭建及配置 ElasticSearch在5.x后的安装和插件的官方执行更好了,head插件官方默认集成在kibana的dev tools里,支持rpm包方式安装,x-pack安装后支持权限及 ...

随机推荐

  1. WHILE (Transact-SQL)

    ---循环 declare @n int declare @rowcount int declare @name varchar(50) create table #temp ( id int ide ...

  2. mysql case when & concat & SUBSTRING_INDEX & not & having 使用的小case

    1. 代码 SELECT a.id, a.activity_name, ( CASE WHEN a.activity_end_time > now() THEN '参与中' ELSE ( CAS ...

  3. react antd Warning: must set key for <rc-animate> children

    location 有可能是一个‘’,''.split() 将输出[""],是个含有空字符串的数组,而[]是个什么都没有的数组,两者不同. code: change initialV ...

  4. 软件项目技术点(5)——在canvas上绘制动态网格线

    AxeSlide软件项目梳理   canvas绘图系列知识点整理 grid类的实现 当鼠标在画布上缩放时,网格能跟着我的鼠标滚动而相应的有放大缩小的效果. 下面是具体实现的代码,draw函数里计算出大 ...

  5. recvfrom WSAEFAULT 10014 的错误记录

    在使用 recvfrom 时一直没报错, 像这样 recvfrom(sock, Data, , (sockaddr*)&server_addr, &send_size) 当我看见百度百 ...

  6. java实现哈弗曼树和哈夫曼树压缩

    本篇博文将介绍什么是哈夫曼树,并且如何在java语言中构建一棵哈夫曼树,怎么利用哈夫曼树实现对文件的压缩和解压.首先,先来了解下什么哈夫曼树. 一.哈夫曼树 哈夫曼树属于二叉树,即树的结点最多拥有2个 ...

  7. cc.out

    Server: , win: 20pkt, SRU: 256KB, link_buf: 32pkt, Seed: , Block_trans: 1350200B, RTT: 100us, RTT_ra ...

  8. 【Leetcode】【Medium】Partition List

    Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...

  9. 【Leetcode】【Medium】Sqrt(x)

    Implement int sqrt(int x). Compute and return the square root of x. 解题思路1,o(log(n)): 像这种从初始遍历查找匹配的任务 ...

  10. QT的hint的toolTip的使用

    QString value = ''1213213231"; this->setToolTip(value);//QT自带的接口 value就是自己想要塞进的数据. 如果字符多的话 怎 ...