翼度科技»论坛 云主机 服务器技术 查看内容

Linux下如何创建SFTP账号

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
前置要求

确保可以使用 ssh,可以通过以下命令确认OpenSSH服务器是否正在运行:
  1. sudo service ssh status
复制代码
如果未运行,先安装 OpenSSH 服务器:
  1. sudo apt-get install openssh-server
复制代码
1.新增用户 my_user,所属组 my_group
  1. (新增用户)
  2. sudo useradd -g my_group -s /bin/false -d /my_directory/my_user my_user

  3. (修改密码)
  4. sudo passwd my_user
复制代码
my_user 为用户名,my_group 为用户组名,/my_directory/my_user 为自定义用户家目录。

2.修改配置
  1. (打开配置文件)
  2. sudo vim /etc/ssh/sshd_config

  3. (编辑)
  4. 按 i

  5. (新增配置)
  6. Match User my_user
  7. ChrootDirectory /my_directory/my_user
  8. ForceCommand internal-sftp

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

  11. (重启配置)
  12. sudo systemctl restart sshd
复制代码
3.修改家目录权限
  1. (切换路径)
  2. cd /my_directory

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

  5. (修改为 my_user 文件夹的权限为 755)
  6. sudo chmod 755 my_user
复制代码
4.在家目录下创建子目录

因为家目录的所属用户必须为 root,否则无法登陆;
但是这样会导致其他用户无法上传文件,所以需要在家目录下建立自己的目录。
  1. (创建文件夹)
  2. sudo mkdir share

  3. (修改所属用户)
  4. sudo chown my_user:my_group share
复制代码
至此,账号创建完成,可以用命令或者 FileZilla 登陆,并上传文件测试。

5.上述命令脚本化

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

  • 5.1 创建
    1. .sh
    复制代码
    文件
  1. sudo vim sftp-conf.sh
复制代码

  • 5.2 按
    1. i
    复制代码
    进入编辑模式,复制粘贴如下代码:
  1. MAX_ATTEMPTS=3
  2. attempt=1
  3. password_match=false

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  45.     attempt=$((attempt + 1))
  46. done

  47. if [ "$password_match" = false ]; then
  48.     echo "密码输入错误次数超过限制。"
  49. fi
复制代码

  • 5.3 按
    1. esc
    复制代码
    退出编辑模式,输入
    1. :wq
    复制代码
    保存并退出
  • 5.4 运行脚本
  1. ./sftp-conf.sh
复制代码
按提示输入账号和密码,即可完成创建账号。

总结

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

来源:https://www.jb51.net/server/322211qv5.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具