Linux搭建sftp服务器

本文详细介绍如何在Linux系统中创建SFTP用户,包括设置用户组、禁用shell、配置目录权限等步骤,并解决了一些常见问题。

参考
- 创建用户
创建的Linux用户:

groupadd  sftp #创建sftp用户组
useradd -g sftp -s /bin/false -M sftp_user 
#(创建 sftp用户,属于sftp组,-s /bin/false 禁止使用shell(/bin/false 可以换成 /sbin/nologin), -M 不要自动建立用户的登入目录)
passwd sftp_user #设置sftp密码  
mkdir /home/sftp/sftp_user #创建 目录
chown -R sftp_user:sftp /home/sftp/sfpt_user #修改目录拥有者
  • 修改SSH
vi /etc/ssh/sshd_config  
#注释掉这一行:Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp #限制root的ssh登录
Match User sftp_user #限制的用户
ChrootDirectory /home/sftp #用户的根目录
目录权限设置上要遵循2点:
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755。
service sshd restart #重启配置

(每次修改配置文件后,如果是使用的FileZilla客户端来连接sftp,那FileZilla客户端也需要重启)

==================使用过程中,遇到的一些报错======================

  1. 修改了组写入权限报错
    bad ownership or modes for chroot directory “/home/sftp”
    参考

  2. 使用ssh2访问出现提示This service allows sftp connections only.
    这是因为在server端设置的/etc/sshd_config文件中,需要设置为:AllowTcpForwarding 应该设置为yes才可。 如果没有设置为yes的话,用户就只能通过sftp访问指定目录,而且不能进行ssh登录. 只有把 AllowTcpForwarding no 改为 AllowTcpForwarding yes ,用户才能通过ssh登录然后访问目录

  3. FileZilla连接报错:
    错误: Server unexpectedly closed network connection
    错误: 无法连接到服务器
    这个是,因为配置文件 /etc/sshd_config中
    当前登录的帐号
    ChrootDirectory 对应的文件夹 不是root用户 和root用户组
    但是有遇到了个大问题,root账户,不能进行ssh登录了
    参考
    测试了下,只要把配置文件里面的这一行注释掉,重启 ssh服务后 就好了
    ForceCommand internal-sftp

  4. 遇到一个问题:创建的组,成员之间不能互相修改文件,每次都要手动改权限,太麻烦了,
    用户创建文件夹的默认权限:通过umask值来设定
    UMASK介绍
    SFTP chroot后如何设置umask
    修改配置文件 /etc/pam.d/sshd
    添加 session optional pam_umask.so umask=0002
    重启sshd服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值