在服务器上配置 SFTP (基于 SSH 的文件传输协议) 通常比传统 FTP 更安全,因为它默认加密通信。以下是详细的配置步骤,以 Ubuntu 或 CentOS 为例。
2.加入SFTP 用户------(小白篇 2)
3.代码加入SFTP JAVA ---(小白篇3)
1. 检查或安装 OpenSSH
大多数 Linux 系统默认安装了 OpenSSH。如果未安装,请根据您的操作系统安装:
Ubuntu/Debian:
bash
sudo apt update
sudo apt install openssh-server
CentOS/RHEL:
bash
sudo yum install openssh-server
验证服务状态:
bash
sudo systemctl status ssh
如果未运行,可以启动并设置开机自启:
bash
sudo systemctl start ssh
sudo systemctl enable ssh
2. 创建 SFTP 用户
创建一个新的用户(如 sftpuser
)并设置密码:
bash
sudo adduser sftpuser
sudo passwd sftpuser123
3. 配置 SFTP 专用目录
创建用户的 SFTP 主目录,并设置权限:
bash
sudo mkdir -p /home/sftpuser/uploads
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
sudo chown sftpuser:sftpuser /home/sftpuser/uploads
4. 修改 SSH 配置文件
编辑 SSH 配置文件以启用 SFTP 子系统:
bash
sudo nano /etc/ssh/sshd_config
在文件中找到以下行:
plain
#Subsystem sftp /usr/lib/openssh/sftp-server
注释掉原行并添加:
plain
Subsystem sftp internal-sftp
在文件末尾添加以下内容来限制 SFTP 用户只访问自己的目录:
plain
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
5. 重启 SSH 服务
保存配置后,重启 SSH 服务:
bash
sudo systemctl restart ssh
6. 测试 SFTP 登录
使用命令行或工具(如 FileZilla)测试登录:
命令行测试:
bash
sftp sftpuser@<服务器IP地址>
输入密码后,您应该只能访问 /uploads
目录。
FileZilla 测试:
- 主机:输入服务器 IP 地址。
- 协议:选择 SFTP。
- 用户名:
sftpuser
- 密码:用户设置的密码。
- 端口:22(默认 SFTP 端口)
点击"快速连接"测试。
7. (可选) 限制 SFTP 用户权限
如果您需要进一步限制用户权限,可以修改用户组或设置以下权限:
bash
sudo chmod 700 /home/sftpuser/uploads
8. 开放防火墙端口
确保服务器的防火墙允许 SFTP(通常为 22 端口):
bash
sudo ufw allow 22
# 或
sudo firewall-cmd --add-port=22/tcp --permanent
sudo firewall-cmd --reload
9. 启用密钥认证 (推荐)
您可以为 SFTP 用户启用 SSH 密钥认证,而不使用密码:
- 生成密钥对:
bash
ssh-keygen -t rsa
- 将公钥上传到服务器:
bash
ssh-copy-id sftpuser@<服务器IP地址>
- 确保
~/.ssh/authorized_keys
文件权限正确:
bash
chmod 600 ~/.ssh/authorized_keys
完成以上步骤后,您的 SFTP 配置已完成并安全可用。