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

查找相关错误信息。

-完-

相关推荐
Leinwin8 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_865382508 小时前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
漠北的哈士奇8 小时前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.7599 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
Thera7779 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++
运维小欣9 小时前
智能体选型实战指南
运维·人工智能
yy55279 小时前
Nginx 性能优化与监控
运维·nginx·性能优化
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ10 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
05大叔12 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密12 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器