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

查找相关错误信息。

-完-

相关推荐
志栋智能3 小时前
超自动化运维如何支持合规审计?
运维·自动化
小诗懂技术4 小时前
【网络通信UDP】基础 进程间不同主机的通信
运维·服务器·网络
名字还没想好☜4 小时前
Docker 容器安全加固实战:非 root、只读根文件系统、drop capabilities 与最小攻击面
运维·安全·docker·容器·kubernetes
琥珀色糖4 小时前
Linux守护进程
linux·终端·守护进程·会话·进程组
鹤落晴春4 小时前
有状态应用 vs 无状态应用
运维·云原生·k8s
starzy19906 小时前
虚拟化解决方案全景:软件虚拟化、硬件虚拟化与 Docker 的位置
运维·docker·容器
Neighbor_OldY7 小时前
云上安全配置审计与误配置修复实战:从安全组、OSS、RAM到数据库的全栈排查复盘
大数据·运维·安全·云计算
开心大爆炸8 小时前
xrdp 连接 登录对话框输入密码后闪退
linux·运维·服务器
oushaojun28 小时前
大厂 C++ 面试:深度剖析 Linux Signal 信号机制(转)
linux
苏生Susheng9 小时前
【软件实施】Linux系统Shell脚本教程
linux·运维·服务器·chrome·spring boot·学习·实施