文档章节

linux配置sftp及权限设置

Sorin_Su
 Sorin_Su
发布于 2016/08/24 16:40
字数 1035
阅读 384
收藏 1

前言1:应用场景:对于数据量很大的交互,对接方不愿意通过接口方式对接式可采用ftp的方式数据交互。

A——>上传数据文件到sftp服务器

    *:需要给A开设一个只用于sftp上传的账号,并且只能在指定目录下活动。

B——>从sftp服务器上获取数据文件

    *:也需要开设一个sftp账号,权限设置视情况而定。

前言2:服务器版本为Centos6.5, 采用系统自带的internal-sftp, 限制用户只能在自己的目录下活动,这里需要使用到chroot,openssh 4.8p1以后都支持chroot,我现在用的是CentOS 6.5,自带的openssh已经是5.3p1,足够了。

1、 查看 openssh的版本,如果低于4.8p1,需要自行升级安装

#    ssh -V

2、 创建sftp组

#    groupadd sftp

3、 创建一个sftp用户,名为guest

#    useradd -g sftp -s /bin/false guest

    *: /bin/false  表示不能通过ssh的方式登录

4、设置密码

#     passwd  guest

    *:输入两次密码,回车即可。也可通过此命令修改已有的账号密码。

5、创建用户活动的根目录

#     mkdir -p /5108/sftp

#     usermod -d /5108/sftp guest

6、配置sshd_config

#     vi /etc/ssh/sshd_config

    找到如下这行,并注释掉

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

    添加如下几行:

    Subsystem       sftp    internal-sftp  # 指定使用sftp服务使用系统自带的internal-sftp

    Match Group sftp   # 匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割

    ChrootDirectory /5108/sftp/ # 用chroot将用户的根目录指定到 /5108/sftp/, 可设为"/",代表根目录。

    ForceCommand    internal-sftp  # 指定sftp命令

    AllowTcpForwarding no  # 允许用户能使用端口转发

    X11Forwarding no # 允许用户能使用端口转发

     :wq保存并退出

7、 设定Chroot目录权限

#     chown root:sftp /5108/sftp

#     chmod 755 /5108/sftp

*:权限必须为755

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

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

#    mkdir /5108/sftp/ABH

#    chown guest:sftp /5108/sftp/ABH

#    chmod 755 /5108/sftp/ABH

*: 权限可设置为777,代表组的所有用户都拥有所有权限。

9、 修改/etc/selinux/config文件中的SELINUX="" 为 disabled或者

#    setenforce 0

10、 重启sshd服务

#     service sshd restart

测试ssh能否登录:

ssh guest@127.0.0.1

测试sftp能否登录:

sftp guest@127.0.0.1

 

到此,我们已经把A的账号建立好了,并已经设置了相应的权限。下面再配置B,也就是我们系统下载文件的账号。

#     useradd -g sftp -s /bin/false  consftp

#     passwd  consftp

设置账号后,就能通过sftp的方式登录了,再配置下路径:

#    usermod -d /5108/sftp/ABH consftp

 

参考资料:http://blog.sina.com.cn/s/blog_4fd50c3901018a0l.html

理解chroot:http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/

补充:

groupdel命令:删除组

groupdel 命令用于删除不再需要的组,如果指定的组中包含用户,则必须先删除组里面的用户>以后,才能删除组。

#     sudo groupdel test

 

vipw

  -g, --group                  编辑 group 数据库  
  -h, --help                    显示此帮助信息并推出  
  -p, --passwd                  编辑 passwd 数据库  
  -q, --quiet                  安静模式  
  -R, --root CHROOT_DIR        chroot 到的目录  
  -s, --shadow                  编辑 shadow 或 gshadow 数据库 

问题:

Write failed: Broken pipe                                                                                               

Couldn't read packet: Connection reset by peer

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

关键是ChrootDirectory /5108/sftp/%u 目录的配置,可更改目录为"/"试试

 

后续:

第一次在设置第二个账号的时候,重复创建了目录,设置了权限,所以导致第一个账号也连接不上。折腾了很久,在此记录下,引以为戒,以后配置方面的东西,一定要先看懂,了解流程。切记切记......

© 著作权归作者所有

Sorin_Su
粉丝 11
博文 36
码字总数 19571
作品 0
朝阳
程序员
私信 提问
配置linux用户实现禁止ssh登陆但可用sftp登录

构想和目标 最近有个这样的诉求:基于对线上服务器的保密和安全,不希望开发人员直接登录线上服务器,因为登录服务器的权限太多难以管控,如直接修改代码、系统配置,并且也直接连上mysql。因...

898009427
2018/07/25
0
0
利用ssh 架设sftp协议 ftp服务器

转载自:http://zengrong.net/post/1616.htm 由于采用明文传输用户名和密码,FTP协议是不安全的。在同一机房中只要有一台服务器被***者控制,它就可能获取到其它服务器上的FTP密码,从而控制其...

bsbforever
2018/06/26
0
0
Linux 创建sftp用户并限制目录权限

最近搞一个sftp项目,用于给第三方公司上传文件,期间查询了很多种方式,依然无法限制目录,很苦恼,本次经过无数次试验,终于成功了。 提供sftp服务的有vsftpd和internal-sftp,这里用的是系...

liubao425
2018/12/28
0
0
如何在 winSCP 中使用 sudo

用截图了解如何在 winSCP 中使用 sudo。 首先你需要检查你尝试使用 winSCP 连接的 sftp 服务器的二进制文件的位置。 你可以使用以下命令检查 SFTP 服务器二进制文件位置: 你可以看到 sftp 服...

作者: Kerneltalks
03/13
0
0
winscp中使用sudo的方法

导读 用截图了解如何在 WinSCP 中使用 sudo。 首先你需要检查你尝试使用 WinSCP 连接的 sftp 服务器的二进制文件的位置。 你可以使用以下命令检查 SFTP 服务器二进制文件位置: [root@kernel...

问题终结者
03/23
37
0

没有更多内容

加载失败,请刷新页面

加载更多

教你玩转Linux—添加批量用户

添加和删除用户对每位Linux系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd一个一个地添加,必然要找一种简便的创建大量用户...

xiangyunyan
17分钟前
3
0
返回提示信息,如:xxx创建成功!

【服务端】在输出的方法块中,加入要输出的字段(qcm_batch_id) QCMUserType.cs: public struct QCM_Custom_Create_Batch_Out_Tag { public BASCoreType.Cmn_Out_T......

_Somuns
17分钟前
3
0
Aliyun Serverless VSCode Extension v1.12.0 发布

Aliyun Serverless VSCode Extension 是阿里云 Serverless 产品 函数计算 Function Compute 的 VSCode 插件,该插件结合了函数计算 Fun 工具以及函数计算 SDK ,是一款 VSCode 图形化开发调试...

阿里云官方博客
18分钟前
4
0
程序员如何培养解决复杂问题的能力?

今天在上网时候,突然看到了这篇文章,感觉非常的适合现在的自己去思考下,可能也适用在座的读者。程序员不仅仅是敲代码,更是一个复合能力的结合体,也不仅仅停留在技术和代码阶段。你想要成...

哥本哈根的小哥
21分钟前
6
0
市场变化驱动产品思维升级

宜信科技中心财富管理产品部负责人Bob,与大家一起聊聊个性化推荐产品功能的设计和B端产品的功能策划方式。 拓展阅读:回归架构本质,重新理解微服务 智慧金融时代,大数据和AI如何为业务赋能...

宜信技术学院
22分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部