linux创建sftp账号

本文介绍如何使用internal-sftp提供SFTP服务,包括创建用户、设置权限、配置sshd_config文件及常见问题解决方法。

提供sftp服务的有vsftpd和internal-sftp,这里用的是系统自带的internal-sftp,操作步骤如下:

1.创建用户YSsftp,禁止ssh登录
useradd -s /sbin/nologin YSsftp
2.设置用户密码

passwd YSsftp

3.创建用户的根目录

mkdir /home/sftpFile

4.设置权限

设置目录权限,目录的权限设定有两个要点:
目录开始一直往上到系统根目录为止的目录拥有者都只能是root
目录开始一直往上到系统根目录为止都不可以具有群组写入权限

chown root:root /home/sftpFile
chmod 755 /home/sftpFile

5.配置sshd_config

vim /etc/ssh/sshd_config
#注释掉这行
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
#添加在配置文件末尾
Subsystem sftp internal-sftp     #指定使用sftp服务使用系统自带的internal-sftp
Match User www                     #匹配用户,如果要匹配多个组,多个组之间用逗号分割
ChrootDirectory /home/sftpFile #用chroot将指定用户的根目录,chroot的含义
ForceCommand internal-sftp        #指定sftp命令
X11Forwarding no                #这两行,如果不希望该用户能使用端口转发的话就加上,否则删掉
AllowTcpForwarding no

6.重启sshd服务

service sshd restart

7.用户登录后进入的是/home/sftpFile即用户根目录,根目录是无法写入的,所以先用root在/home/sftpFile新建一个UPfile目录

mkdir /home/sftpFile/UPfile

8.修改目录所有者和权限

chown UPfile:UPfile/home/sftpFile/UPfile
chmod 777 /home/sftpFile/UPfile

测试登录

sftp -oPort=22 sftpFile@host

常见文件修复
1.Directive ‘AddressFamily’ is not allowed within a Match block
这里写图片描述
将这段文字放在配置文件前面

  1. 2.
Write failed: Broken pipe     
Couldn't read packet: Connection reset by peer
这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755
<think>好的,用户想搭建SFTP服务器并创建多个用户账号,需要找到相关的指南或教程。首先,我需要回忆一下关于SFTP服务器的搭建步骤。根据提供的引用内容,有几个关键点需要注意。 首先,SFTP是基于SSH的,所以通常使用OpenSSH来搭建。用户可能需要安装openssh-server,但大多数Linux系统已经预装了。接下来是配置SSH的配置文件sshd_config,这里需要注释掉原来的Subsystem行,替换为internal-sftp,这样可以启用内置的SFTP服务器。然后,通过Match Group或Match User来设置不同的用户组或用户,指定他们的根目录,并进行权限限制,比如ChrootDirectory,这样可以限制用户只能访问自己的目录。 接着是创建用户和目录结构。需要创建专门的用户组,比如sftp,然后添加用户到这个组。每个用户的根目录必须由root拥有,权限不能超过755,否则会导致连接失败。用户的可写目录比如upload需要在根目录下创建,并设置正确的所有者和权限,这样用户才能上传文件。 还要注意安全设置,比如禁用端口转发和X11转发,确保用户只能使用SFTP,不能进行其他操作。此外,可能需要处理SELinux的问题,如果系统启用了SELinux,需要调整策略或关闭,否则可能导致权限问题。 用户提到的多个引用中,引用3和引用5提到了具体的配置步骤,包括修改sshd_config和目录权限设置。引用2和引用5提到了创建用户和目录的命令,比如mkdir、chown、chmod等。引用4则展示了如何为不同用户指定不同的根目录。 用户可能遇到的问题包括目录权限设置不正确导致连接被拒绝,或者用户无法写入指定的上传目录。需要确保每个步骤都严格按照权限要求执行,尤其是ChrootDirectory必须由root拥有,并且权限为755。用户的可写目录应该在ChrootDirectory下,由相应用户拥有,比如sftp_user1,并设置合适的权限如755或750。 另外,测试步骤也很重要,使用sftp命令或FileZilla等工具进行连接测试,验证配置是否正确。如果遇到问题,可以查看日志文件/var/log/secure或auth.log来排查错误。 总结一下,搭建过程包括安装必要的软件包,配置sshd_config,创建用户组和用户,设置目录结构和权限,处理SELinux,最后测试配置。需要确保每一步都正确,特别是权限部分,否则容易导致配置失败。</think>### 搭建SFTP服务器并配置多用户账号的详细步骤 #### 1. **安装SSH服务(若未预装)** ```bash sudo yum install openssh-server # CentOS sudo apt-get install openssh-server # Ubuntu/Debian ``` #### 2. **配置SFTP子系统** 编辑SSH配置文件`/etc/ssh/sshd_config`,注释原有SFTP配置并添加以下内容: ```bash Subsystem sftp internal-sftp # 使用内置SFTP服务[^3][^4] Match Group sftp # 匹配用户组sftp ChrootDirectory /sftp/%u # 用户根目录限制为/sftp/用户名[^3][^5] ForceCommand internal-sftp # 强制仅使用SFTP AllowTcpForwarding no # 禁用TCP转发[^3] X11Forwarding no # 禁用X11图形转发[^3] ``` #### 3. **创建用户组与目录结构** - 创建用户组`sftp`: ```bash sudo groupadd sftp ``` - 创建根目录并设置权限: ```bash sudo mkdir /sftp sudo chown root:sftp /sftp # 所有者必须为root[^5] sudo chmod 755 /sftp # 权限不可超过755[^5] ``` #### 4. **添加SFTP用户** - **示例:创建用户`sftp_user1`** ```bash sudo useradd -m -d /sftp/sftp_user1 -s /sbin/nologin -G sftp sftp_user1 sudo passwd sftp_user1 ``` - `-d`指定用户根目录(需与`ChrootDirectory`路径匹配)[^3] - `-s /sbin/nologin`禁止Shell登录[^3] - **创建用户可写子目录**: ```bash sudo mkdir -p /sftp/sftp_user1/upload sudo chown sftp_user1:sftp /sftp/sftp_user1/upload # 用户拥有写入权限[^2] sudo chmod 755 /sftp/sftp_user1/upload # 或750增强安全性[^2] ``` #### 5. **处理SELinux(如启用)** ```bash sudo setsebool -P ssh_chroot_rw_homedirs on # 允许Chroot目录读写 # 或临时关闭SELinux(测试用): sudo setenforce 0 ``` #### 6. **重启SSH服务** ```bash sudo systemctl restart sshd # CentOS 7+/Ubuntu 16.04+ ``` #### 7. **验证SFTP连接** ```bash sftp sftp_user1@服务器IP # 输入密码后应仅能访问/sftp/sftp_user1下的文件 ``` ### 关键配置说明 | 配置项 | 作用 | 来源 | |----------------------|----------------------------------------------------------------------|------------| | `ChrootDirectory` | 限制用户仅能访问指定目录,路径需包含用户名(如`/sftp/%u`) | [^3][^5] | | `ForceCommand` | 强制用户仅使用SFTP,禁止SSH Shell访问 | [^3][^4] | | 目录权限`root:755` | 根目录必须由root所有且权限≤755,否则SFTP连接失败 | [^5] | | 用户目录`用户:权限` | 用户实际操作的子目录(如`upload`)需由用户自身所有,权限可设为750 | [^2][^5] |
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值