一、安装OpenSSH服务器
SFTP是SSH的扩展协议,依赖OpenSSH软件包。大多数Linux发行版默认安装OpenSSH,若未安装,可通过以下命令安装:
sudo apt update && sudo apt install openssh-serversudo yum install openssh-serversudo systemctl start sshd && sudo systemctl enable sshd。二、配置SSH服务以启用SFTP
编辑SSH主配置文件/etc/ssh/sshd_config,修改以下关键参数:
Subsystem sftp行,取消注释或修改为Subsystem sftp internal-sftp(推荐使用内置子系统,无需额外安装sftp-server)。<用户组名>替换为自定义组(如sftpusers):Match Group <用户组名>
ChrootDirectory %h # 将用户限制在其家目录(%h为用户主目录占位符)
ForceCommand internal-sftp # 强制使用SFTP,禁用SSH shell访问
AllowTcpForwarding no # 禁止TCP转发
X11Forwarding no # 禁止X11转发
保存并退出编辑器(Ctrl+X→Y→Enter)。三、创建专用SFTP用户组及用户
sudo groupadd <用户组名>(如sftpusers)。/home外的路径):sudo useradd -m -G <用户组名> -s /sbin/nologin <用户名>(-s /sbin/nologin禁止用户通过SSH登录shell)。sudo passwd <用户名>(输入两次密码)。sftpuser用户):sudo useradd -m -G sftpusers -s /sbin/nologin sftpuser && sudo passwd sftpuser。四、设置Chroot目录权限
Chroot目录(用户家目录)必须归root所有,且权限为755,防止用户越权修改目录结构:
sudo mkdir -p /home/<用户名>(如/home/sftpuser)。root所有:sudo chown root:root /home/<用户名>。sudo chmod 755 /home/<用户名>。sudo mkdir /home/<用户名>/upload。sudo chown <用户名>:<用户组名> /home/<用户名>/upload。sudo chmod 755 /home/<用户名>/upload(或775,允许用户写入)。五、重启SSH服务应用配置
修改配置后,重启SSH服务使更改生效:
sudo systemctl restart sshd。sudo service sshd restart。六、测试SFTP连接
使用SFTP客户端(如命令行、FileZilla或WinSCP)连接服务器:
sftp <用户名>@<服务器IP>,输入密码后若进入SFTP交互模式(显示sftp>),则配置成功。put 本地文件路径 远程文件路径(如put ~/test.txt /upload/test.txt)。get 远程文件路径 本地文件路径(如get /upload/test.txt ~/download/test.txt)。ls(远程)或lls(本地)。exit或bye。七、安全增强建议
sudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reload。sudo ufw allow ssh。sudo setsebool -P ssh_chroot_rw_homedirs on(允许chroot目录读写)。