安装OpenSSH服务器
sudo apt update && sudo apt install openssh-server
sudo yum install openssh-server
创建SFTP用户组与用户
sudo groupadd sftpusers
sudo useradd -g sftpusers -s /bin/false sftpuser
sudo 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]