SFTP配置

配置SFTP用户:禁止SSH登录并限制根目录

创建用户 sftpuser,并禁止ssh登录,不创建家目录

useradd -s /sbin/nologin -M sftpuser   创建用户

passwd sftpuser    设置密码

如果是已经创建好的用户,需要

usermod -m -d  /  sftpuser

把用户sftpuser的家目录变成/

创建根目录,所有sftp用户都将在该目录下活动。

mkdir /app/iwshome/ftp

设置目录权限,目录的权限设定有两个要点:

目录开始一直往上到系统根目录为止的目录拥有者都只能是root

目录开始一直往上到系统根目录为止都不可以具有群组写入权限,建议755,设置成777会报错

chown root:root  /app/iwshome/ftp

chmod 755 /app/iwshome/ftp

在创建好的更目录下创建新的目录

设置用户sftpuser,如果设置拥有者为root,表示该目录sftpuser没有权限读写

若需要对该目录拥有读写权限,设置权限:chown sftpuser:sftpuser /app/iwshome/ftp

配置sshd_config 

注释掉

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

添加

Subsystem sftp internal-sftp  

指定使用sftp服务使用系统自带的internal-sftp,如果不添加,用户无法通过sftp登录。

配置完这条就结束,那么sftp用户既可以ssh登录也可以sftp登录

配置下面的就会禁止ssh登录

添加在配置文件末尾

Match User sftpuser            #匹配用户,如果要匹配多个组,多个组之间用逗号分割

ChrootDirectory   /app/iwshome/ftp                 #用chroot将指定用户的根目录,可以使用%u设账号名如/app/iwshome/ftp/%u,也可以使用%h代表用户家目录如直接%h

ForceCommand internal-sftp                           #指定sftp命令

X11Forwarding no

AllowTcpForwarding no

##这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉

Match User只是设置用户只能通过sftp登录,不能ssh登录,不是设置哪些用户可以sftp

Allowuser 设定用户白名单,不在名单中的用户不能使用sftp

重启sftp服务 

service sshd restart 

注意事项 

如果用户原本有家目录如

sftpuser用户在/etc/passwd有家目录/home/sftpuser

使用ChrootDirectory   /app/iwshome/ftp  这个参数是指定一个新的根目录

最后进入的路径为/app/iwshome/ftp/home/sftpuser

此路径不存在,所以会出现问题,最好把家目录删除或者设置为/或者使用%h

### 3.1 SFTP 文件上传大小限制的原因及解决方法 SFTP 本身并不直接限制文件上传的大小,但 OpenSSH 服务器配置或系统资源限制可能导致上传失败。例如,在某些情况下,用户可能会遇到上传大文件时被中断的问题。这种限制通常与用户资源限制(ulimit)有关。可以通过以下方式进行排查和调整: - **检查用户资源限制** 使用 `ulimit -a` 命令可以查看当前用户的资源限制,其中 `file size` 项表示单个文件的最大大小(单位为 KB)。如果该值较低,可以在 `/etc/security/limits.conf` 中为特定用户或用户组设置更高的限制: ``` sftpuser soft fsize 10485760 sftpuser hard fsize 20971520 ``` 上述配置将软限制设置为 10GB,硬限制设置为 20GB。设置完成后,需要重启 SSH 服务以生效: ```bash systemctl restart sshd ``` - **系统内核限制** 某些系统可能通过内核参数限制文件大小。可以通过修改 `/etc/sysctl.conf` 中的 `fs.file-max` 参数来调整系统级别的文件大小限制,并使用以下命令应用更改: ```bash sysctl -p ``` ### 3.2 SFTP 路径限制的原因及解决方法 在 SFTP 配置中,路径限制通常由 `ChrootDirectory` 指令引起。该指令用于将用户限制在其指定的目录中,防止其访问系统其他部分。例如: ``` Match User sftpuser ChrootDirectory /app/iwshome/ftp ForceCommand internal-sftp AllowTcpForwarding no ``` 在上述配置中,用户 `sftpuser` 被限制在其根目录 `/app/iwshome/ftp` 中。需要注意的是,`ChrootDirectory` 所指定的目录及其所有父目录必须由 root 拥有,且不能有写权限,否则 SSH 服务会拒绝连接。用户主目录可以设置为 `/app/iwshome/ftp/home/sftpuser`,并在该目录中赋予用户写权限: ```bash chown root:root /app/iwshome/ftp chmod 755 /app/iwshome/ftp mkdir -p /app/iwshome/ftp/home/sftpuser chown sftpuser:sftpuser /app/iwshome/ftp/home/sftpuser ``` - **目录权限设置** 如果用户在上传文件时提示“权限被拒绝”,应检查目标目录的权限设置。可以使用 `ls -l` 查看目录权限,并使用 `chmod` 或 `chown` 修改权限。例如,为特定用户组增加写权限: ```bash chmod g+w /app/iwshome/ftp/upload ``` 或者更改目录所有者: ```bash chown sftpuser:sftpuser /app/iwshome/ftp/upload ``` ### 3.3 SFTP 用户安全限制与管理 为了进一步提升安全性,可以结合用户组管理,对多个 SFTP 用户进行统一限制。例如,创建一个专用用户组 `sftponly`,并将所有 SFTP 用户加入该组。然后在 SSH 配置中使用 `Match Group` 指令进行统一限制: ``` Match Group sftponly ChrootDirectory /app/iwshome/ftp ForceCommand internal-sftp AllowTcpForwarding no ``` 这种方式可以避免为每个用户单独配置,提高可维护性。 此外,可以通过日志记录来监控用户行为。在 `internal-sftp` 指令中添加 `-f AUTH -l INFO` 参数,可以将操作日志记录到系统认证日志中(如 `/var/log/auth.log`): ``` Subsystem sftp internal-sftp -f AUTH -l INFO ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值