Linux下如何创建SFTP账号

 更新时间:2024年06月04日 16:25:26   作者:腐烂的橘子  
这篇文章主要介绍了Linux下如何创建SFTP账号问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

前置要求

确保可以使用 ssh,可以通过以下命令确认OpenSSH服务器是否正在运行:

sudo service ssh status

如果未运行,先安装 OpenSSH 服务器:

sudo apt-get install openssh-server

1.新增用户 my_user,所属组 my_group

(新增用户)
sudo useradd -g my_group -s /bin/false -d /my_directory/my_user my_user

(修改密码)
sudo passwd my_user

my_user 为用户名,my_group 为用户组名,/my_directory/my_user 为自定义用户家目录。

2.修改配置

(打开配置文件)
sudo vim /etc/ssh/sshd_config

(编辑)
按 i

(新增配置)
Match User my_user
ChrootDirectory /my_directory/my_user
ForceCommand internal-sftp

(保存并退出)
先按 esc,再输入 :wq 回车

(重启配置)
sudo systemctl restart sshd

3.修改家目录权限

(切换路径)
cd /my_directory

(修改 my_user 文件夹的 owner 为 root)
sudo chown root my_user

(修改为 my_user 文件夹的权限为 755)
sudo chmod 755 my_user

4.在家目录下创建子目录

因为家目录的所属用户必须为 root,否则无法登陆;

但是这样会导致其他用户无法上传文件,所以需要在家目录下建立自己的目录。

(创建文件夹)
sudo mkdir share

(修改所属用户)
sudo chown my_user:my_group share

至此,账号创建完成,可以用命令或者 FileZilla 登陆,并上传文件测试。

5.上述命令脚本化

可以将上述流程写到一个脚本里,下次创建脚本时只需要执行脚本就可以了。

  • 5.1 创建 .sh 文件
sudo vim sftp-conf.sh
  • 5.2 按 i 进入编辑模式,复制粘贴如下代码:
MAX_ATTEMPTS=3
attempt=1
password_match=false

while [ $attempt -le $MAX_ATTEMPTS ]; do
    # 提示用户输入用户名
    echo "请输入用户名:"
    read username

    # 提示用户输入密码
    echo "请输入密码:"
    read -s password1

    echo "请再次输入密码:"
    read -s password2

    # 检查密码是否一致
    if [ "$password1" != "$password2" ]; then
        echo "两次输入的密码不一致。"
    else
        echo "--------------------------------------------------"
        echo "密码输入正确,执行命令开始."

        echo "新增SFTP用户 $username..."
        useradd -g my_group -s /bin/false -d /my_directory/$username $username

        echo "设置密码..."
        echo "$username:$password1" | chpasswd

        echo "修改配置文件..."
        # 在配置文件中新增一行
        sed -i '/# .sh append/a Match User '"$username"'\nChrootDirectory /my_directory/'"$username"'\nForceCommand internal-sftp' /etc/ssh/sshd_config

        echo "切换路径..."
        cd /my_directory

        echo "创建用户文件夹..."
        mkdir $username

        echo "修改文件夹 owner 为 root..."
        chown root $username

        echo "修改为文件夹的权限为 755..."
        chmod 755 $username

        echo "进入文件夹..."
        cd $username

        echo "创建 files 文件夹..."
        mkdir files

        echo "修改所属用户..."
        chown $username:my_group share
        echo "--------------------------------------------------"
        echo "命令执行完毕。账户创建完成,账户目录为 /my_directory/$username"
        password_match=true
        break
    fi

    attempt=$((attempt + 1))
done

if [ "$password_match" = false ]; then
    echo "密码输入错误次数超过限制。"
fi
  • 5.3 按 esc 退出编辑模式,输入 :wq 保存并退出
  • 5.4 运行脚本
./sftp-conf.sh

按提示输入账号和密码,即可完成创建账号。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Apache POI的基本使用详解

    Apache POI的基本使用详解

    Apache POI是由Apache公司提佛那个的Java编写的免费开源的跨平台Java API,提供对Microsoft Office格式文件的读和写的功能。本文向大家介绍Apache POI的基本使用,感兴趣的朋友一起看看吧
    2021-11-11
  • linux服务器下配置多tomcat实现实例

    linux服务器下配置多tomcat实现实例

    这篇文章主要介绍了linux服务器下配置多tomcat的相关资料,需要的朋友可以参考下
    2017-05-05
  • CentOS 7配置环境变量的4种常见方式

    CentOS 7配置环境变量的4种常见方式

    在CentOS 7系统中配置环境变量,基本原理与通用Linux系统一致,但在具体步骤和配置文件上有一些需要特别注意的地方,下面小编为大家详细介绍在CentOS 7中配置环境变量的方法,需要的朋友可以参考下
    2025-09-09
  • Windows 配置Apache以便在浏览器中运行Python script的CGI模式

    Windows 配置Apache以便在浏览器中运行Python script的CGI模式

    在前面的我的一篇文章中 “Windows XP下的Python 首次安装配置和使用 ”谈到当想在Apache服务器下运行Python script的时候,发现Apache的mod_python版本还不支持Python 2.6更别说3.0.1了,只有2.5之下的,折腾着卸载和安装,最后还没搞定,就先搁一边了。
    2009-07-07
  • Linux服务器硬件及RAID配置全过程

    Linux服务器硬件及RAID配置全过程

    服务器是一种高性能计算机,用于在网络中提供各种服务,它在稳定性、安全性、性能等方面要求更高,因此硬件配置也不同于普通计算机
    2026-01-01
  • Linux查看分区文件系统类型的方法总结

    Linux查看分区文件系统类型的方法总结

    这篇文章主要给大家总结介绍了关于Linux查看分区文件系统类型的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用linux系统具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • linux中高并发socket最大连接数的优化详解

    linux中高并发socket最大连接数的优化详解

    这篇文章主要给大家介绍了关于linux中高并发socket最大连接数优化的相关资料,文中介绍的很详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起学习学习吧。
    2017-02-02
  • linux定时top、netstat输出到文件方式

    linux定时top、netstat输出到文件方式

    这篇文章主要介绍了linux定时top、netstat输出到文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-08-08
  • Linux平台安装redis及redis扩展的方法

    Linux平台安装redis及redis扩展的方法

    这篇文章主要介绍了Linux平台安装redis及redis扩展的方法,较为详细的分析了Linux平台redis安装步骤、操作命令与相关注意事项,需要的朋友可以参考下
    2018-08-08
  • Vim编辑器常用的命令总结

    Vim编辑器常用的命令总结

    使用 Vim 的时间不长,但如今已经离不开熟悉的 Vim 编辑模式了。 Vim 的学习曲线是非常陡的,一开始学习的时候,面对很多的操作命令要去记住,常常望而却步。其实,只要记住一些常用的命令,加之在工作中坚持使用 Vim 进行编辑,很快就能得心应手了。下面来一起看看吧。
    2017-04-04

最新评论