首页主机资讯CentOS中SFTP如何设置

CentOS中SFTP如何设置

时间2025-10-17 23:11:03发布访客分类主机资讯浏览1092
导读:一、安装OpenSSH服务器 CentOS系统通常默认安装OpenSSH服务器,若未安装,可通过以下命令安装: sudo yum install openssh-server 安装完成后,启动SSH服务并设置为开机自启: sudo syst...

一、安装OpenSSH服务器
CentOS系统通常默认安装OpenSSH服务器,若未安装,可通过以下命令安装:
sudo yum install openssh-server
安装完成后,启动SSH服务并设置为开机自启:
sudo systemctl start sshd
sudo systemctl enable sshd

二、创建专用SFTP用户组与用户
为隔离SFTP用户权限,建议创建专门的用户组(如sftpusers)及用户,并限制其登录方式为SFTP(禁止shell登录):

# 创建用户组
sudo groupadd sftpusers  

# 创建用户(以"sftpuser"为例),指定所属组、禁止shell登录
sudo useradd -g sftpusers -s /sbin/nologin sftpuser  

# 设置用户密码
sudo passwd sftpuser  

输入密码并确认即可。

三、配置用户目录权限
SFTP用户的根目录(由ChrootDirectory指定)必须归属root,且权限为755(防止用户越权修改目录结构);用户需在根目录下创建可写入的子目录(如upload)用于文件上传:

# 创建用户根目录(以用户主目录为例)
sudo mkdir -p /home/sftpuser  

# 设置根目录归属与权限
sudo chown root:root /home/sftpuser  
sudo chmod 755 /home/sftpuser  

# 创建可写入的子目录
sudo mkdir /home/sftpuser/upload  

# 设置子目录归属与权限(用户需对该目录有读写权限)
sudo chown sftpuser:sftpusers /home/sftpuser/upload  
sudo chmod 755 /home/sftpuser/upload  

:若将用户限制在其他目录(如/data/sftp/sftpuser),需同步调整上述路径。

四、修改SSH配置文件(关键步骤)
编辑/etc/ssh/sshd_config文件,通过Match规则针对SFTP用户组进行配置,替换默认的SFTP子系统为更安全的internal-sftp(无需额外进程,性能更好):

sudo vi /etc/ssh/sshd_config

在文件末尾添加以下内容(以sftpusers组为例):

# 启用SFTP子系统(可选,推荐使用internal-sftp替代)
Subsystem sftp internal-sftp  

# 匹配sftpusers组,限制其访问
Match Group sftpusers  
    ChrootDirectory %h  # 将用户限制在其主目录(%h代表用户主目录)  
    ForceCommand internal-sftp  # 强制使用SFTP,禁用SSH shell  
    AllowTcpForwarding no  # 禁止TCP转发(防止端口转发攻击)  
    X11Forwarding no  # 禁止X11转发(避免不必要的图形界面转发)  

说明

  • ChrootDirectory %h:将用户限制在其主目录,无法访问系统其他路径;
  • internal-sftp:比默认的sftp-server更轻量,无需单独进程,且支持chroot环境。

五、重启SSH服务应用配置
修改配置文件后,需重启SSH服务使更改生效:
sudo systemctl restart sshd

六、测试SFTP连接
使用SFTP客户端(如命令行、FileZilla或WinSCP)连接服务器,验证配置是否成功:

# 命令行测试(替换为实际用户名和服务器IP)
sftp sftpuser@your_server_ip  

输入密码后,若能成功登录并执行lsputget等命令,则说明配置生效。

七、安全增强措施(可选但推荐)

  1. 使用密钥认证:替代密码登录,提升安全性。生成密钥对后,将公钥添加到用户~/.ssh/authorized_keys文件中,并在sshd_config中设置PasswordAuthentication no
  2. 禁用root登录:在sshd_config中设置PermitRootLogin no,防止root用户通过SFTP登录。
  3. 调整SELinux策略:若启用了SELinux,需允许SFTP访问用户目录。执行以下命令:
    sudo semanage fcontext -a -t sftp_chroot_t "/data/sftp(/.*)?"  # 替换为实际目录  
    sudo restorecon -Rv /data/sftp  
    
  4. 防火墙配置:确保防火墙允许SSH(默认端口22)流量:
    sudo firewall-cmd --permanent --add-service=ssh  
    sudo firewall-cmd --reload  
    ```。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS中SFTP如何设置
本文地址: https://pptw.com/jishu/729510.html
如何配置CentOS的SFTP端口 CentOS SFTP配置教程有哪些

游客 回复需填写必要信息