Linux -- CentOS搭建sftp和其中的坑

步骤

  1. 创建sftp组:groupadd sftp
  2. 创建一个sftp用户mysftp并加入到创建的sftp组中,同时修改mysftp用户的密码
useradd -g sftp -s /sbin/nologin -M mysftp  
passwd mysftp

-g 加入到sftp组
-s 禁止使用命令
-M 不要自动建立用户的登入目录

  1. 新建/data/sftp目录,并指定/data和其下文件夹分组为:root:root,并修改权限755
mkdir -p /data/sftp
chown -R root:root /data/sftp
chmod 755 /data/sftp
  1. 上面的目录是sftp的根目录,必须是root:root组下的,并且权限最高为755,再创建一个目录是存放文件的,该目录应该是sftp组下的,且权限为755
mkdir -p /data/sftp/mysftp  
chown -R mysftp:sftp /data/sftp/mysftp  
chmod 755 /data/sftp/mysftp  
  1. 修改配置文件:# vim /etc/ssh/sshd_config
PasswordAuthentication yes      (一定要改成yes,不然可能直接登陆时被拒绝)
	注释掉:Subsystem sftp /usr/libexec/openssh/sftp-server
	在 文件最后添加以下配置,否则可能导致sshd服务无法启动

Subsystem sftp internal-sftp
Match Group sftp          这行用来匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割   匹配用户的话用 Match User sftpuser 
ChrootDirectory /data/sftp/%u    用chroot将用户的根目录指定到/data/sftp/%u,%u代表用户名,这样用户就只能在/data/sftp/%u下活动
X11Forwarding no 
AllowTcpForwarding yes
  1. 重启服务验证:# systemctl restart sshd.service

需要注意的问题

  本来到这里就该结束的,但是我还是想说点话,这里如果你照着之前网上的搭的,你会有很多坑。

  1. 首先是 sshd_config配置文件中,Match Group和Match User下所指定的ChrootDirectory目录,必须是root用户root组,不然sftp根本连不上,如果连不上,请仔细检查下面这几点:
 目录的权限设定有两个要点:
	1、由ChrootDirectory指定的目录开始一直往上到系统根目录为止的目录拥有者都只能是root
	2、由ChrootDirectory指定的目录开始一直往上到系统根目录为止都不可以具有群组写入权限
所以遵循以上两个原则
	1)我们将/data/sftp/这两层目录的所有者设置为了root,所有组设置为root,并且权限为755
	2)我们将/data/sftp/mysftp这层的权限设置为755,所有者mysftp,所有组sftp
  1. ssh登录不了,报错:This service allows sftp connections only。有些博文让配置AllowTcpForwarding为no,但是如果你真这么配了,结果就是你连ssh都用不了,登都登不了这个机器了,而只能用sftp并且只能在特定用户的目录下活动。

  2. root用户ssh登录不了,报错:Server unexpectedly closed network connection。是因为有的博文让你设置了ForceCommand internal-sftp,注释掉这个配置。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值