hj12 发表于 2025-6-9 17:15:49

Linux系统SFTP服务器搭建指南

SFTP(SSH File Transfer Protocol)是一种安全的文件传输协议,基于SSH协议提供加密的文件传输功能。下面是在Linux系统上搭建SFTP服务器的详细步骤。1. 确认SSH服务已安装SFTP是SSH的一个子系统,因此首先需要确保SSH服务已安装并运行:# 检查SSH服务状态
sudo systemctl status sshd

# 如果未安装,使用以下命令安装(以Ubuntu/Debian为例)
sudo apt update
sudo apt install openssh-server

# 启动SSH服务
sudo systemctl start sshd
sudo systemctl enable sshd2. 创建SFTP用户组(可选)为了更好的管理SFTP用户,可以创建一个专门的用户组:sudo groupadd sftpusers3. 创建SFTP用户方法一:普通用户转换为SFTP用户
# 创建新用户(例如sftpuser1)
sudo useradd -m -G sftpusers sftpuser1

# 设置密码
sudo passwd sftpuser1

# 修改用户shell为/sbin/nologin(禁止shell登录)
sudo usermod -s /sbin/nologin sftpuser1方法二:创建仅限SFTP访问的用户(更安全)
# 创建用户并指定主目录
sudo useradd -m -d /home/sftpuser1 -G sftpusers -s /bin/false sftpuser1

# 设置密码
sudo passwd sftpuser1

# 设置目录权限
sudo chown root:root /home/sftpuser1
sudo chmod 755 /home/sftpuser1

# 创建用户上传目录
sudo mkdir /home/sftpuser1/uploads
sudo chown sftpuser1:sftpusers /home/sftpuser1/uploads
sudo chmod 755 /home/sftpuser1/uploads4. 配置SSH以限制SFTP访问编辑SSH配置文件 /etc/ssh/sshd_config:sudo nano /etc/ssh/sshd_config在文件末尾添加或修改以下内容:# 禁用SFTP子系统注释(如果已注释)
Subsystem sftp /usr/lib/openssh/sftp-server

# 或者对于较新版本
# Subsystem sftp internal-sftp

# 限制sftpusers组的用户只能使用SFTP
Match Group sftpusers
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no保存并退出编辑器,然后重启SSH服务:sudo systemctl restart sshd5. 测试SFTP连接从客户端测试连接:sftp sftpuser1@your_server_ip或者使用图形化SFTP客户端如FileZilla、WinSCP等。
6. 常见问题解决6.1 连接被拒绝
[*]检查SSH服务是否运行:sudo systemctl status sshd
[*]检查防火墙设置:sudo ufw status(如果使用UFW)
[*]确保端口22开放:sudo ufw allow 22
6.2 权限问题确保Chroot目录及其上级目录属主为root,权限为755:sudo chown root:root /home/sftpuser1
sudo chmod 755 /home/sftpuser16.3 用户无法上传文件确保用户对上传目录有写权限:sudo chown sftpuser1:sftpusers /home/sftpuser1/uploads
sudo chmod 755 /home/sftpuser1/uploads7. 安全性建议
[*]禁用root用户的SFTP访问
[*]使用SSH密钥认证代替密码
[*]定期更新SSH服务
[*]考虑更改默认SSH端口
[*]使用fail2ban防止暴力破解
通过以上步骤,您已经成功在Linux系统上搭建了一个基本的SFTP服务器,并进行了适当的安全配置。

页: [1]
查看完整版本: Linux系统SFTP服务器搭建指南