如何在Debian中配置SFTP
SFTP(SSH文件传输协议)是基于SSH的安全文件传输工具,Debian系统可通过配置OpenSSH服务器快速实现。以下是详细步骤:
Debian系统默认包含OpenSSH服务器,若未安装,可通过以下命令安装:
sudo apt update
sudo apt install openssh-server
编辑SSH主配置文件/etc/ssh/sshd_config,修改或添加以下内容:
sudo nano /etc/ssh/sshd_config
启用内置SFTP子系统:找到# Subsystem sftp /usr/lib/openssh/sftp-server行,取消注释并替换为:
Subsystem sftp internal-sftp
此配置将使用OpenSSH内置的SFTP服务,无需额外安装sftp-server包。
限制用户访问(可选但推荐):在文件末尾添加以下内容,限制sftpusers组的用户仅能通过SFTP访问,且无法使用SSH shell:
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
其中:
Match Group sftpusers:匹配sftpusers组的用户;ChrootDirectory %h:将用户根目录限制为其主目录(%h代表用户主目录);ForceCommand internal-sftp:强制用户只能使用SFTP命令;AllowTcpForwarding no和X11Forwarding no:禁用端口转发和X11转发,增强安全性。sudo groupadd sftpusers
sudo adduser username # 创建用户(按提示设置密码)
sudo usermod -aG sftpusers username # 将用户加入sftpusers组
adduser时设置):sudo passwd username
SFTP要求用户主目录的权限必须正确,否则会导致连接失败:
sudo chown root:root /home/username # 主目录所有者必须为root
sudo chmod 755 /home/username # 主目录权限为755(rwxr-xr-x)
若需让用户上传文件,可在主目录下创建子目录(如uploads)并设置权限:
sudo mkdir -p /home/username/uploads
sudo chown username:sftpusers /home/username/uploads # 子目录所有者为用户,组为sftpusers
sudo chmod 775 /home/username/uploads # 子目录权限为775(rwxrwxr-x)
修改配置文件后,需重启SSH服务:
sudo systemctl restart sshd
使用SFTP客户端从本地或其他机器连接服务器,验证配置是否正确:
sftp username@your_server_ip
连接成功后,应显示SFTP提示符(如sftp>),可通过ls、put、get等命令测试文件传输功能。
/var/log/auth.log,获取详细错误信息;ChrootDirectory设置为用户可写的目录,否则可能导致安全漏洞。