💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# [Linux配置SFTP](https://www.cnblogs.com/convict/p/16411632.html) 需求:配置多个SFTP用户,对应不同的SFTP路径 ### 1\. 创建sftp根目录[#](https://www.cnblogs.com/convict/p/16411632.html#1-%E5%88%9B%E5%BB%BAsftp%E6%A0%B9%E7%9B%AE%E5%BD%95) 比如我配置`/data/sftp`为`sftp`根目录,之后每个用户都对应,该目录下的子目录 ~~~shell mkdir -p /data/sftp ~~~ ### 2\. 创建组[#](https://www.cnblogs.com/convict/p/16411632.html#2-%E5%88%9B%E5%BB%BA%E7%BB%84) 因为有多个 sftp 用户,所以需要建立一个组为`sftp`,专门管理 sftp 用户 ~~~shell groupadd sftp ~~~ ### 3\. 创建用户 #### 3.1 创建用户 ~~~shell # 示例 useradd -m -d /data/sftp_data/user1 -s /usr/sbin/nologin -g sftp user1 useradd -m -d /data/sftp/king -s /usr/sbin/nologin -g sftp king ~~~ > * \-m:自动创建 home 目录 > > * \-d:指定 home 目录为 /data/sftp\_data/user1 > > * \-s:shell 为 /usr/sbin/nologin 禁止用户使用SSH登录,仅用于 SFTP > > * \-g:指定组为 sftp > #### 3.2 配置用户密码[#](https://www.cnblogs.com/convict/p/16411632.html#32-%E9%85%8D%E7%BD%AE%E7%94%A8%E6%88%B7%E5%AF%86%E7%A0%81) ~~~shell passwd king ~~~ **配置ssl** 对登录用户的限定 `vim /etc/ssh/sshd_config ` ~~~ #Subsystem sftp /usr/libexec/openssh/sftp-server #注释这个 Subsystem sftp internal-sftp #添加这个,使用系统自带的internal-sftp Match Group sftp # 匹配组,多个组用逗号分隔 ChrootDirectory /data/sftp/%u # 还可以用 %h代表用户家目录 ,%u代表用户名,也能具体的路径 ForceCommand internal-sftp # 强制使用系统自带的 internal-sftp 服务 这样用户只能使用ftp模式登录 # 下面两项是与安全有关 AllowTcpForwarding no # 禁止TCP转发 X11Forwarding no # 禁止X11转发 ~~~ **设置目录权限**, 目录的权限设定有**两个要点**: * ChrootDirectory 设置的目录权限及其所有的上级文件夹权限,属主和属组必须是 **root**; * ChrootDirectory 设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限最大设置只能是 **755**。 ~~~ chown root:root /data/sftp chmod 755 /data/sftp chown root:root /data/sftp/king chmod 755 /data/sftp/king ~~~ **重载** ``` systemctl reload sshd ``` ### 4. 高并发报错 **问题描述:** 高并发状态下,SFTP连接报错:connection is closed by foreign host **原因分析:** 系统SSH终端连接数配置过小,查看虚拟机该参数,该参数在/etc/ssh/sshd\_config中配置,为MaxStartups。 MaxStartups 默认设置是 10:30:100,意思是从第10个连接开始以30%的概率(递增)拒绝新连接,直到连接数达到100为止。 **解决方案:** 1)修改/etc/ssh/sshd\_config中的MaxStartups,将其改为MaxStartups 1000:30:1200 2)修改/etc/ssh/sshd\_config中的MaxSessions,将其修改为1000 3)重启SSH服务/etc/init.d/ssh restart ***** 如果 Creating **mailbox** file: File exists;到邮箱目录删除对应的用户信息即可 ``` cd /var/spool/mail rm -fr king ```