1. 安装OpenSSH服务器
Debian系统默认包含OpenSSH服务器,若未安装,可通过以下命令完成安装:
sudo apt update
sudo apt install openssh-server
2. 调整SSH服务器配置以启用SFTP
使用文本编辑器打开SSH配置文件/etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
# Subsystem sftp /usr/lib/openssh/sftp-server行,取消注释并将路径改为内部SFTP服务(更轻量且无需额外安装):Subsystem sftp internal-sftp
sftpusers组并将该组用户限制为仅能通过SFTP访问,且根目录锁定为其主目录:Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
上述配置中,Match Group sftpusers表示仅匹配sftpusers组的用户;ChrootDirectory %h将用户根目录限定为其主目录(%h为用户主目录占位符);ForceCommand internal-sftp强制用户只能使用SFTP命令,禁用SSH shell访问;AllowTcpForwarding no和X11Forwarding no分别禁用端口转发和X11转发,进一步提升安全性。3. 创建SFTP专用用户组(可选)
若需集中管理SFTP用户,可创建专用用户组:
sudo groupadd sftpusers
4. 添加SFTP用户并加入对应组
ftpuser为例)并设置密码:sudo adduser ftpuser
sudo passwd ftpuser
sftpusers组(若未创建组可跳过此步):sudo usermod -aG sftpusers ftpuser
注:-aG参数表示追加用户至指定组,避免移除用户原有组权限。5. 设置用户主目录权限
SFTP要求用户主目录的所有者为该用户,且权限为755(确保用户可读写自身目录,但其他用户无法修改):
sudo chown ftpuser:ftpuser /home/ftpuser
sudo chmod 755 /home/ftpuser
若用户主目录不存在,可通过sudo mkdir -p /home/ftpuser创建后再执行上述命令。
6. 重启SSH服务使配置生效
修改配置文件后,需重启SSH服务以应用更改:
sudo systemctl restart sshd
部分系统中可能使用ssh服务名,若上述命令报错,可尝试:
sudo systemctl restart ssh
7. 验证SFTP连接
使用SFTP客户端从本地或其他机器连接服务器,验证配置是否成功:
sftp ftpuser@your_server_ip
连接成功后,输入用户密码,若进入用户主目录并可执行ls、put、get等命令,则说明SFTP配置正常。