1. 安装OpenSSH服务器
Debian系统通常预装OpenSSH服务器,若未安装,可通过以下命令完成安装:
sudo apt update && sudo apt install openssh-server
安装完成后,SSH服务会自动启动;若未启动,可手动执行sudo systemctl start ssh启动服务,并通过sudo systemctl enable ssh设置开机自启。
2. 配置SSH以启用SFTP
SFTP的配置文件位于/etc/ssh/sshd_config,需用文本编辑器(如nano)修改该文件:
sudo nano /etc/ssh/sshd_config
# Subsystem sftp /usr/lib/openssh/sftp-server行,删除行首的#号,将其改为:Subsystem sftp internal-sftp
此配置将使用SSH内置的SFTP服务,无需额外安装sftp-server包。sftpusers组的用户: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用户组及用户
sudo groupadd sftpusers
sftpusers组:sudo adduser username # 创建用户(按提示设置密码)
sudo usermod -aG sftpusers username # 将用户添加到sftpusers组
若需直接创建用户并设置密码,可使用sudo useradd -m -G sftpusers username(-m创建主目录,-G添加到附加组)。4. 设置用户主目录权限
SFTP用户的根目录(ChrootDirectory)需满足以下权限要求:
root(避免用户越权修改目录结构);755(允许用户读取和进入目录,但不能写入)。sudo chown root:root /home/username # 将主目录所有者设为root
sudo chmod 755 /home/username # 设置主目录权限为755
若用户需要在主目录内上传/下载文件,可在主目录下创建子目录(如upload),并设置该子目录的所有者为该用户:
sudo mkdir /home/username/upload
sudo chown username:username /home/username/upload
5. 重启SSH服务
完成配置文件修改后,需重启SSH服务使更改生效:
sudo systemctl restart ssh
若需验证SSH服务状态,可执行sudo systemctl status ssh,确认服务处于active (running)状态。
6. 测试SFTP连接
使用SFTP客户端(如终端命令或FileZilla)测试连接:
sftp username@your_server_ip
输入用户密码后,若成功登录,应显示类似以下界面:
Connected to your_server_ip.
sftp>
此时可执行ls(查看目录)、put local_file(上传文件)、get remote_file(下载文件)等命令,验证SFTP功能正常。
注意事项
ChrootDirectory设置为该目录路径(如ChrootDirectory /var/sftp/username),但需确保该目录的权限符合要求(所有者为root,权限为755)。/etc/ssh/sshd_config中的PasswordAuthentication no实现(需提前为用户配置SSH密钥)。/var/log/auth.log。