安装OpenSSH服务器
sudo apt update && sudo apt install openssh-serversudo yum install openssh-server创建SFTP用户组与用户
sudo groupadd sftpuserssudo useradd -g sftpusers -s /bin/false sftpusersudo passwd sftpuser配置用户目录权限
/var/sftp)并设置权限:sudo mkdir -p /var/sftp
sudo chown root:root /var/sftp
sudo chmod 755 /var/sftp
/var/sftp/sftpuser):sudo mkdir /var/sftp/sftpuser
sudo chown sftpuser:sftpusers /var/sftp/sftpuser
sudo chmod 755 /var/sftp/sftpuser
修改SSH配置文件
编辑/etc/ssh/sshd_config,添加以下内容:
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory /var/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
ChrootDirectory:限制用户仅能访问其家目录。ForceCommand:强制使用SFTP,禁止SSH登录。重启SSH服务
sudo systemctl restart sshd
配置防火墙(可选)
sudo ufw allow 22 # Ubuntu
sudo firewall-cmd --add-service=ssh --permanent # CentOS
权限管理
/var/sftp)必须归root所有,权限为755,用户目录权限为755。安全增强
/etc/ssh/sshd_config:PasswordAuthentication no,并添加公钥到~/.ssh/authorized_keys。sudo setenforce 0,或永久修改/etc/selinux/config。日志与监控
sshd_config中添加LogLevel VERBOSE,定期查看/var/log/auth.log。软件更新
定期更新OpenSSH版本,修复安全漏洞。
使用SFTP客户端连接测试:
sftp sftpuser@服务器IP
若能成功登录且仅能访问指定目录,则配置正确。
参考来源:[1,2,3,4,6,7,8,9,10,11]