Debian系统配置SFTP详细步骤
SFTP(SSH File Transfer Protocol)是基于SSH协议的加密文件传输工具,Debian系统可通过OpenSSH服务器快速部署。以下是具体配置流程:
Debian系统默认包含OpenSSH服务器,若未安装,可通过以下命令完成安装:
sudo apt update
sudo apt install openssh-server
安装完成后,SSH服务会自动启动(默认端口为22)。
编辑SSH主配置文件/etc/ssh/sshd_config,修改或添加以下内容:
sudo nano /etc/ssh/sshd_config
# Subsystem sftp /usr/lib/openssh/sftp-server行,取消注释并将路径改为internal-sftp(更轻量且无需额外安装):Subsystem sftp internal-sftp
sftpusers组内的用户限制在自家目录(ChrootDirectory),并禁用TCP转发、X11转发等非必要功能:Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
保存并退出编辑器(Ctrl+O→Enter→Ctrl+X)。为提升管理便利性,建议创建专门的SFTP用户组,并将用户添加至该组:
# 创建sftpusers组
sudo groupadd sftpusers
# 创建新用户(如"sftpuser")并设置密码
sudo adduser sftpuser
# 将用户添加至sftpusers组(-aG表示追加至组,避免移出原有组)
sudo usermod -aG sftpusers sftpuser
若需创建用户时不设置密码(通过密钥登录),可使用adduser --disabled-password sftpuser。
SFTP用户的根目录(ChrootDirectory)必须满足以下条件:
root(防止用户越权修改目录结构);755(允许用户进入目录但无法写入)。# 设置主目录所有者为root
sudo chown root:root /home/sftpuser
# 设置主目录权限为755
sudo chmod 755 /home/sftpuser
若需让用户上传文件,需在主目录下创建可写子目录(如upload):
# 创建上传目录
sudo mkdir /home/sftpuser/upload
# 设置上传目录所有者为用户自身(允许写入)
sudo chown sftpuser:sftpusers /home/sftpuser/upload
# 设置上传目录权限为755(或775,根据需求调整)
sudo chmod 755 /home/sftpuser/upload
修改配置文件后,需重启SSH服务以应用更改:
sudo systemctl restart sshd
可通过sudo systemctl status sshd检查服务状态(显示“active (running)”即为正常)。
使用SFTP客户端(如Linux终端、WinSCP)连接服务器,验证配置是否成功:
sftp sftpuser@your_server_ip
输入密码后,若成功登录并显示主目录列表(如/home/sftpuser),则说明配置生效。可尝试上传/下载文件至upload目录,确认写入权限正常。
sudo systemctl status sshd),或防火墙是否放行22端口(sudo ufw allow 22);ChrootDirectory(主目录)所有者为root且权限为755,上传目录所有者为用户自身;/var/log/auth.log)获取详细错误信息。