这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!
您需要 登录 才可以下载或查看,没有账号?立即注册
×
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 sshd
复制代码 2. 创建SFTP用户组(可选)为了更好的管理SFTP用户,可以创建一个专门的用户组: 3. 创建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/uploads
复制代码 4. 配置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 sshd
复制代码 5. 测试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/sftpuser1
复制代码 6.3 用户无法上传文件确保用户对上传目录有写权限: - sudo chown sftpuser1:sftpusers /home/sftpuser1/uploads
- sudo chmod 755 /home/sftpuser1/uploads
复制代码 7. 安全性建议禁用root用户的SFTP访问 使用SSH密钥认证代替密码 定期更新SSH服务 考虑更改默认SSH端口 使用fail2ban防止暴力破解
通过以上步骤,您已经成功在Linux系统上搭建了一个基本的SFTP服务器,并进行了适当的安全配置。
|