Ubuntu下创建sftp帐号

Ubuntu server上只有一个root用户,且通过ssh key方式登录服务器。

现需要需要创建一个测试帐号,用于给测试人员上传代码用,该帐号不需要用到ssh key。

步骤如下:

1、创建用户

bash 复制代码
sudo adduser sftpuser

在创建用户时,系统会提示你设置密码和其他信息。完成后,用户的主目录将默认设置为 /home/sftpuser

2、修改用户主目录

bash 复制代码
sudo usermod -d /var/www/ims sftpuser

将用户的主目录修改为 /var/www/ims

3、设置目录权限

bash 复制代码
sudo chown root:root /var/www/ims
sudo chmod 755 /var/www/ims

确保 /var/www/ims 目录的权限正确,以便 sftpuser 可以访问。

然后,在 /var/www/ims 目录下创建一个子目录,用于 sftpuser 上传文件。

bash 复制代码
sudo mkdir /var/www/ims/upload
sudo chown sftpuser:sftpuser /var/www/ims/upload

4、配置SSH以限制sftpuser的访问

编辑SSH配置文件 /etc/ssh/sshd_config,添加以下内容:

bash 复制代码
Match User sftpuser
    ChrootDirectory /var/www/ims
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no
    PasswordAuthentication yes
    PubkeyAuthentication no
  • Match User sftpuser:指定要限制的用户。

  • ChrootDirectory /var/www/ims:将用户的根目录限制为 /var/www/ims

  • ForceCommand internal-sftp:强制用户只能使用SFTP,不能使用SSH shell。

  • AllowTcpForwarding noX11Forwarding no:禁用端口转发和X11转发。

  • PasswordAuthentication yes:允许密码认证。

  • PubkeyAuthentication no:禁用公钥认证。

5、重启SSH服务

bash 复制代码
sudo systemctl restart ssh

6、测试sftp访问

bash 复制代码
sftp sftpuser@your_server_ip

7、验证权限

bash 复制代码
cd /home

如果配置正确,你应该会收到权限被拒绝的错误。

通过以上步骤, 你已经成功创建了一个只能访问 /var/www/ims 目录的SFTP账户,并且限制了其对其他目录的访问。

如果不成功,可以按以下步骤排查:

1、检查SSH配置

确保 /etc/ssh/sshd_configsftpuser 的配置正确。特别是 ChrootDirectoryForceCommand 部分。

此例中,sftpuser的主目录是/var/www/ims。

2、检查目录权限

用户主目录及其上层直至根目录的所有目录权限都应该是root:root,755

bash 复制代码
ls -ld /var/www/ims

输出应该类似于:

bash 复制代码
drwxr-xr-x 2 root root 4096 Oct  1 12:34 /var/www/ims
  • drwxr-xr-x:表示权限为 755

  • root root:表示所有者和组均为 root

ims的上级目录权限也应该如此。

3、检查SSH日志

bash 复制代码
sudo tail -f /var/log/auth.log

查找相关错误信息。

-完-

相关推荐
China_Yanhy8 分钟前
入职 Web3 运维日记 · 第 8 日:黑暗森林 —— 对抗 MEV 机器人的“三明治攻击”
运维·机器人·web3
艾莉丝努力练剑14 分钟前
hixl vs NCCL:昇腾生态通信库的独特优势分析
运维·c++·人工智能·cann
酉鬼女又兒22 分钟前
每天一个Linux命令_printf
linux·运维·服务器
虾说羊27 分钟前
docker容器化部署项目流程
运维·docker·容器
Trouvaille ~28 分钟前
TCP Socket编程实战(三):线程池优化与TCP编程最佳实践
linux·运维·服务器·网络·c++·网络协议·tcp/ip
大大大反派31 分钟前
CANN 生态中的自动化部署引擎:深入 `mindx-sdk` 项目构建端到端 AI 应用
运维·人工智能·自动化
June`37 分钟前
高并发网络框架:Reactor模式深度解析
linux·服务器·c++
WHD3061 小时前
苏州勒索病毒加密 服务器数据解密恢复
运维·服务器
蜡笔小炘1 小时前
LVS -- 持久链接(Persistent Connection)实现会话粘滞
运维·服务器
生活很暖很治愈2 小时前
Linux——孤儿进程&进程调度&大O(1)调度
linux·服务器·ubuntu