今天接到通知需要在集群某个节点搭建一个sftp,没想到坑还挺多。
搭建sftp首先需要创建group组
然后建立对应的user,设置passwa user 密码。usermod -d /home/ user 设置家目录(实践证明这一步可以省略,具体参考https://www.linuxquestions.org/questions/red-hat-31/sftp-chroot-error-write-failed-broken-pipe-4175555089/)
再配置/etc/ssh/sshd_config文件:
Match user sftpadmin 由于多次配置失败,我将每个user的配置单独写出来
ChrootDirectory /home/user 注意:这里是写当前用户的目录。而不是常见的%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
因此 将 /etc/passwd中的home目录改成“/” .这里我并没有尝试不该会不会报错,你可以试试~
改这个文件后记得关闭一个服务(忘记了): setenforce 0
设置Chroot目录权限(关键):
权限设置不当,会报错“Broken Pipe”
首先将根目录及以上/sftp/user/ 都改为root属主和属组
再将权限设置为755,chmod 755 /sftp/user
然后将user目录下的其他文件设为sftpuser的属主和属组
最后记得, systemctl restart sshd.service 重启ssh ,再测试一下sftp sftpusers@127.0.0.1
捣鼓了半天,终于完成了基本设置。这个文章主要用于提醒小白(我自己),百度上面大部分Broken Pipe报错都是互相抄袭,都说是权限设置问题。还是得多找找。
有一个朋友发的一个说:https://www.cnblogs.com/sunshinea121/p/10648606.html
和我最后的设置一样,只是还需要config正确才能起作用。
这位朋友说的%h我试了一下也没成功,大家可以参考:
http://www.mamicode.com/info-detail-1821900.html
至少,这两篇文章和大部分的所谓“解决方案”提出了不同的解决思路,或许对别人有用。