关于Ubuntu 23.04搭建SFTP服务器的两个疑问
关于Ubuntu 23.04搭建SFTP服务器的两个疑问
嗨,我来帮你梳理这两个关于SFTP配置的问题:
问题1:为什么要新建SFTP用户,能否用现有账户加入sftp组?
首先,新建专门的SFTP用户是安全最佳实践——这样能把文件传输权限和日常系统用户的权限完全隔离开。专门的SFTP用户通常不需要SSH登录系统的权限,也不会拥有系统其他目录的访问权,能有效降低误操作或者被攻击后的风险。
当然你完全可以用现有账户加入sftp组(执行usermod -a -G sftp existingUser),但需要注意几个细节:
- 如果你的现有账户之前能通过SSH登录系统,这么做之后如果不额外配置,用户依然可以SSH登录。如果你只想让它仅使用SFTP功能,需要修改
/etc/ssh/sshd_config,添加对应的Match规则,限制该用户只能使用SFTP,比如设置ForceCommand internal-sftp、X11Forwarding no、AllowTcpForwarding no。 - 要确保现有账户的主目录或你指定的SFTP目录权限符合SFTP服务器的要求(比如Chroot场景下,目录所有者必须是root,且不能开放写权限给其他用户),否则会导致SFTP连接失败。
问题2:能否将SFTP文件夹设置在桌面路径/home/existingUser/Desktop/sftp?
完全可以,但需要遵守SFTP Chroot功能的硬性权限要求,具体操作步骤如下:
- 先创建目标目录:
sudo mkdir -p /home/existingUser/Desktop/sftp - 调整Chroot目录的权限(必须由root拥有,且权限不能是777,建议设为755):
sudo chown root:root /home/existingUser/Desktop/sftp sudo chmod 755 /home/existingUser/Desktop/sftp - 在该目录下创建一个用户可读写的子目录(因为Chroot根目录用户无法直接写入):
sudo mkdir /home/existingUser/Desktop/sftp/uploads sudo chown existingUser:existingUser /home/existingUser/Desktop/sftp/uploads sudo chmod 755 /home/existingUser/Desktop/sftp/uploads - 修改
/etc/ssh/sshd_config,添加针对该用户的规则:Match User existingUser ForceCommand internal-sftp ChrootDirectory /home/existingUser/Desktop/sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no - 重启SSH服务使配置生效:
sudo systemctl restart sshd
配置完成后,用户通过SFTP连接后会被限制在/home/existingUser/Desktop/sftp目录下,只能对uploads目录进行读写操作。
备注:内容来源于stack exchange,提问作者Wolf
相关产品推荐
相关产品推荐

