一、准备工作:安装OpenSSH服务器
SFTP是SSH协议的扩展,默认集成在OpenSSH服务器中。大多数Linux发行版(如Debian/Ubuntu、CentOS/RHEL)无需额外安装即可使用。若未安装,可通过以下命令快速部署:
sudo apt update && sudo apt install openssh-serversudo yum update && sudo yum install openssh-serversystemctl status ssh(或sshd,取决于系统)确认服务处于运行状态。二、配置SFTP服务器:限制权限与启用子系统
编辑SSH配置文件:打开/etc/ssh/sshd_config,找到并修改以下关键配置(若不存在则新增):
Subsystem sftp /usr/lib/openssh/sftp-server(部分系统路径可能为/usr/libexec/openssh/sftp-server,需根据实际情况调整);Match Group指令针对特定用户组(如sftpusers)设置严格权限,防止越权操作:Match Group sftpusers
ChrootDirectory %h # 将用户限制在其家目录(chroot jail)
ForceCommand internal-sftp # 强制使用SFTP,禁止Shell登录
AllowTcpForwarding no # 禁用端口转发
X11Forwarding no # 禁用X11转发
上述配置确保用户只能通过SFTP访问自己的家目录,无法执行系统命令。
创建专用SFTP用户组与用户:
sudo groupadd sftpusers;sudo useradd -m -G sftpusers your_username(-m创建家目录,-G指定附加组);sudo passwd -l your_username,强制使用SSH密钥认证。设置家目录权限:
root(chroot要求):sudo chown root:root /home/your_username;755(允许用户读取/执行,但无法写入):sudo chmod 755 /home/your_username;.ssh子目录(用于存放授权密钥):mkdir /home/your_username/.ssh,并设置权限为700:chmod 700 /home/your_username/.ssh。配置SSH密钥认证(增强安全性):
ssh-keygen -t rsa -b 4096(按提示保存密钥文件,如~/.ssh/id_rsa);ssh-copy-id -i ~/.ssh/id_rsa.pub your_username@remote_host,自动将公钥添加到~/.ssh/authorized_keys;authorized_keys权限为600:chmod 600 /home/your_username/.ssh/authorized_keys,防止未经授权的访问。三、重启SSH服务:应用配置更改
修改配置文件后,需重启SSH服务使更改生效:
sudo systemctl restart ssh;sudo systemctl restart sshd。四、使用SFTP客户端连接远程服务器
命令行客户端(基础操作):
在本地终端输入sftp your_username@remote_host(替换为实际用户名和服务器IP),输入密码或使用密钥认证(若配置了密钥)。连接成功后,可使用以下常用命令:
ls:列出远程目录内容;cd [目录名]:切换远程目录;get [远程文件] [本地路径]:下载文件(如get file.txt ~/Downloads);put [本地文件] [远程路径]:上传文件(如put ~/Documents/report.pdf /home/your_username/docs);mkdir [目录名]:创建远程目录;rm [文件名]:删除远程文件;exit或bye:退出SFTP会话。图形化客户端(便捷操作):
推荐使用FileZilla(跨平台)、WinSCP(Windows)或Cyberduck(Mac),输入服务器信息(主机名/IP、端口22、用户名、密码/密钥)即可连接。图形化界面支持拖拽文件传输、右键菜单操作(如重命名、删除),更适合新手或不熟悉命令行的用户。
五、安全注意事项:强化远程管理安全性
/etc/ssh/sshd_config中设置PasswordAuthentication no),仅允许密钥登录,降低暴力破解风险。iptables、ufw)或SSH配置(AllowUsers your_username@192.168.1.*)限制仅特定IP地址可连接SFTP服务器。tail -f /var/log/auth.log(Debian/Ubuntu)或tail -f /var/log/secure(CentOS/RHEL)实时查看SFTP登录记录,及时发现异常行为。