当前位置: 代码网 > 服务器>服务器>Linux > Linux下如何创建SFTP账号

Linux下如何创建SFTP账号

2024年06月17日 Linux 我要评论
前置要求确保可以使用 ssh,可以通过以下命令确认openssh服务器是否正在运行:sudo service ssh status如果未运行,先安装 openssh 服务器:sudo apt-get

前置要求

确保可以使用 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

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

  • Linux网桥配置br-lan、eth0、eth1、ra0、rai0方式

    Linux网桥配置br-lan、eth0、eth1、ra0、rai0方式

    linux网关模式下将有线lan和无线lan共享网段实现局域网内互联思路其实很简单:就是将虚拟出一个bridge口,将对应的有线lan和无线lan都绑定在这个虚... [阅读全文]
  • Linux之路由转发和SNAT的应用方式

    1.snat的介绍snat又称源地址转换。源地址转换是内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址(可指定具体的服务以及相应的端口或端口范围),这可以使内网中使用…

    2024年06月17日 服务器
  • Linux如何开启路由转发功能

    Linux如何开启路由转发功能

    linux开启路由转发功能一、准备需求:两台不同网段的主机通信方案:另外启动一台服务器b,双网卡,一个网卡和服务器a通信,一个网卡和服务器c通信。a和c通信通过... [阅读全文]
  • 详解如何在Linux上添加路由

    详解如何在Linux上添加路由

    在添加路由之前,我们需要先了解一些基本概念。基本概念什么是路由?路由是指确定数据包从源节点到目的节点的路径的过程。这个过程涉及到在网络中的多个节点之间选择最佳路... [阅读全文]
  • linux停止jar包进程方式

    linux停止jar包进程提供两种方式关闭进程:知道端口号;知道jar包名称1.知道端口号,停止进程(1)根据端口号获取进程编号pidnetstat -lnp|grep 端口号比如…

    2024年06月17日 服务器
  • Linux如何运行Jar包命令

    一、后台运行jarnohup java -jar /home/spring_one_demo-0.0.1-snapshot.jar > spring.log 2>&am…

    2024年06月17日 服务器

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com