确保系统已安装最新版本的OpenSSH服务器(包含SFTP组件),可通过yum install openssh-server安装或更新。启动SSH服务并设置开机自启:systemctl start sshd && systemctl enable sshd。
sftpusers),便于统一管理权限:groupadd sftpusers/sbin/nologin(禁止登录系统shell),并添加到sftpusers组:useradd -m -s /sbin/nologin sftpuserusermod -aG sftpusers sftpuserpasswd sftpuser编辑/etc/ssh/sshd_config文件,添加或修改以下关键配置:
PermitRootLogin noSubsystem sftp internal-sftpMatch指令将sftpusers组用户限制在其主目录(ChrootDirectory),并禁用端口转发等不必要的功能:Match Group sftpusers
ChrootDirectory %h # 将用户限制在主目录(如/home/sftpuser)
ForceCommand internal-sftp # 强制使用SFTP,禁止SSH shell访问
AllowTcpForwarding no # 禁用TCP转发
X11Forwarding no # 禁用X11转发
PasswordAuthentication noPubkeyAuthentication yesroot,权限为755(禁止用户修改主目录结构):mkdir -p /home/sftpuserchown root:root /home/sftpuserchmod 755 /home/sftpuseruploads),属主为用户自身,权限为755(或775若需组内共享):mkdir -p /home/sftpuser/uploadschown sftpuser:sftpusers /home/sftpuser/uploadschmod 755 /home/sftpuser/uploads
注:
ChrootDirectory的上级目录(如/home)权限必须为755,且属主为root,否则会导致SFTP连接失败。
ssh-keygen -t rsa -b 4096~/.ssh/id_rsa,私钥需严格保密)id_rsa.pub)复制到服务器用户的~/.ssh/authorized_keys文件中:ssh-copy-id sftpuser@your_server_ip~/.ssh/authorized_keys文件权限为600,所属用户为sftpuser:chmod 600 ~/.ssh/authorized_keyschown sftpuser:sftpusers ~/.ssh/authorized_keyssystemctl start firewalld && systemctl enable firewalldfirewall-cmd --permanent --add-service=sftpfirewall-cmd --reloadiptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPTiptables-services包):service iptables save 或 iptables-save > /etc/sysconfig/iptablessestatus(若显示Enforcing,则表示启用)setsebool -P ssh_sysadm_login onsetsebool -P ssh_keysign on/home),需调整SELinux上下文:chcon -Rt svirt_sandbox_file_t /path/to/sftpuser/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=permissive(测试无误后再改回enforcing)。sftp -i ~/.ssh/id_rsa sftpuser@your_server_ip/var/log/secure(或/var/log/auth.log)日志,查看SFTP登录记录及异常活动(如多次认证失败)。yum update更新系统和OpenSSH软件,修复已知安全漏洞。/etc/ssh/sshd_config、用户主目录及密钥文件,防止配置丢失。sftpusers组成员及用户权限,移除不必要的用户或调整权限。