Debian系统使用SFTP实现文件共享的完整步骤
SFTP基于SSH协议,需先确保系统安装OpenSSH服务器。在终端执行以下命令更新软件包列表并安装:
sudo apt update && sudo apt install openssh-server -y
安装完成后,SSH服务会自动启动(若未启动,可通过sudo systemctl start ssh手动启动)。
编辑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设为专用SFTP用户组(后续创建),并限制其只能通过SFTP访问(禁用SSH shell登录、TCP转发等):Match Group sftpusers
ChrootDirectory %h # 将用户限制在其家目录(Chroot Jail)
ForceCommand internal-sftp # 强制使用SFTP,禁止SSH登录
AllowTcpForwarding no
X11Forwarding no
保存文件并退出编辑器。
为提升安全性,建议为SFTP用户创建专用组,并限制组内用户的权限。
sudo groupadd sftpusers
ftpuser为例,创建用户并设置密码(交互式输入):sudo adduser ftpuser
sudo usermod -aG sftpusers ftpuser
.bashrc或/etc/ssh/sshd_config,添加ForceCommand internal-sftp(已在步骤2中全局配置,无需重复)。Chroot Jail需确保用户无法突破其家目录限制,因此需严格设置目录权限:
root,权限设为755(禁止用户修改家目录结构):sudo chown root:root /home/ftpuser
sudo chmod 755 /home/ftpuser
upload),并设置用户拥有该目录的读写权限:sudo mkdir /home/ftpuser/upload
sudo chown ftpuser:sftpusers /home/ftpuser/upload
sudo chmod 755 /home/ftpuser/upload # 或775(允许组内用户写入)
注意:Chroot目录(如
/home/ftpuser)必须由root拥有且不可写,否则SFTP连接会失败。
修改配置后,需重启SSH服务使更改生效:
sudo systemctl restart ssh
可通过sudo systemctl status ssh检查服务状态(显示“active (running)”即为正常)。
使用SFTP客户端(如命令行、FileZilla)连接服务器,验证配置是否成功:
sftp ftpuser@your_server_ip
输入密码后,若成功进入SFTP交互模式(显示sftp>),则说明配置正确。sftp> ls # 查看远程目录
sftp> put local_file.txt /upload/ # 上传本地文件至服务器
sftp> get /upload/remote_file.txt local_file.txt # 下载服务器文件至本地
sftp> mkdir remote_dir # 创建远程目录
sftp> exit # 退出连接
/etc/ssh/sshd_config,设置PasswordAuthentication no,并通过ssh-keygen生成密钥对,将公钥上传至服务器(~/.ssh/authorized_keys)。ufw)限制SFTP端口(默认22)的访问,仅允许可信IP地址连接:sudo ufw allow from trusted_ip to any port 22
sudo ufw enable
/var/log/auth.log),及时发现异常登录行为。通过以上步骤,即可在Debian系统上实现安全的SFTP文件共享。用户将被限制在自己的家目录内,无法访问系统其他部分,同时保证文件传输的加密性。