在Linux系统中进行文件传输时,SFTP(SSH文件传输协议)是最稳妥的选择之一。它基于SSH协议,全程加密传输,安全性远高于传统FTP。许多用户误以为配置SFTP很复杂,实际上只需几个关键步骤。理解底层逻辑后,您就能轻松应对类似的传输需求。
在开始之前,请确保Linux服务器已安装OpenSSH服务。当前主流发行版(如Ubuntu、Debian、CentOS、Fedora)通常默认包含,但如果系统为精简安装或您曾手动关闭,则需要手动安装。具体命令如下:
1. 安装SFTP服务器(OpenSSH)
首先检查SSH服务是否已安装。若未安装,请根据系统类型执行以下命令:
基于Debian的系统(如Ubuntu)
sudo apt-get update
sudo apt-get install openssh-server
基于RPM的系统(如Fedora、CentOS、RHEL)
sudo yum update
sudo yum install openssh-server
完成上述步骤后,系统即具备SFTP功能——因为SFTP是OpenSSH的内置子系统,无需单独安装额外的SFTP软件包。
2. 启动SSH服务并设置开机自启
查看SSH服务的运行状态:
sudo systemctl status ssh
如果状态显示未运行,请执行以下命令启动服务并设置开机自启:
sudo systemctl start ssh
sudo systemctl enable ssh
此时服务器已可接受SFTP连接。但出于安全考虑,建议不要直接使用root或现有用户账号,而是创建专用SFTP用户并严格限制其权限。
3. 创建专用SFTP用户并限制权限
这一步常被忽视——若赋予用户完整Shell访问权限,服务器将面临风险。正确做法如下:
sudo adduser sftp_user
按提示设置密码:
sudo passwd sftp_user
接下来是关键步骤——编辑SSH主配置文件:
sudo nano /etc/ssh/sshd_config
在文件末尾添加以下配置(请将sftp_user替换为实际用户名):
Subsystem sftp internal-sftp
Match User sftp_user
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
该配置的含义:仅允许该用户通过SFTP协议访问,登录后自动chroot至其家目录,并禁用TCP转发和X11转发。这意味着用户只能进行文件传输,无法执行其他操作——这是专业的安全实践。
保存配置文件后,重启SSH服务使更改生效:
sudo systemctl restart ssh
4. 验证SFTP连接
现在即可使用支持SFTP的客户端进行连接,例如FileZilla、WinSCP,或直接通过命令行:
sftp sftp_user@服务器IP
输入密码后,若出现sftp>提示符,说明配置成功。此后所有文件传输均通过SSH加密通道,有效防止中间人攻击和数据监听。
补充提示:如需更精细的权限控制(如限制上传文件大小、目录读写权限),可结合Linux文件权限和ACL进行调整,这属于进阶配置。但上述步骤已能满足90%的日常安全传输需求。
