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,需修改该文件定制SFTP行为:
# Subsystem sftp /usr/lib/openssh/sftp-server行,取消注释并将路径改为internal-sftp(更轻量且无需额外进程):Subsystem sftp internal-sftp
Group替换为你创建的SFTP用户组(如sftpusers),ChrootDirectory %h会将用户限制在自己的主目录(%h为用户家目录占位符),ForceCommand internal-sftp强制用户只能使用SFTP命令:Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
注:
AllowTcpForwarding和X11Forwarding设置为no可禁用端口转发和X11转发,进一步提升安全性。
3. 创建SFTP专用用户组及用户
为便于管理,建议创建专门的SFTP用户组,并将需要使用SFTP的用户添加至该组:
sftpusers的组(组名可自定义):sudo groupadd sftpusers
adduser命令创建用户(如username),并通过usermod将其加入sftpusers组:sudo adduser username # 按提示设置用户密码及其他信息
sudo usermod -aG sftpusers username # -aG表示追加至组,避免移除原有组
sudo passwd username命令设置。4. 设置用户主目录权限
SFTP要求用户的主目录必须由root拥有,且权限为755(确保用户无法修改目录权限);若需让用户上传文件,可在主目录下创建子目录(如uploads)并赋予用户所有权:
sudo chown root:root /home/username # 主目录所有者为root
sudo chmod 755 /home/username # 主目录权限为755
sudo mkdir /home/username/uploads # 创建上传目录(可选)
sudo chown username:username /home/username/uploads # 上传目录所有者为用户
注意:若省略上传目录,用户只能在主目录下查看文件,无法上传或修改。
5. 重启SSH服务使配置生效
修改配置文件后,需重启SSH服务以应用更改:
sudo systemctl restart ssh
若系统使用sshd服务(部分Debian版本可能使用此名称),可执行sudo systemctl restart sshd。
6. 测试SFTP连接
使用SFTP客户端(如Linux终端或FileZilla)连接服务器,验证配置是否正确:
sftp username@your_server_ip
输入密码后,若成功登录,可执行ls(查看目录)、put local_file(上传文件)、get remote_file(下载文件)等命令,确认SFTP功能正常。