在 CentOS 上配置 SFTP 使用公钥登录(禁用密码登录),一般步骤如下:
useradd -m sftpuser
passwd sftpuser # 先设置一次密码,后面可禁用
.ssh 目录并设置权限mkdir -p /home/sftpuser/.ssh
chmod 700 /home/sftpuser/.ssh
将客户端生成的 公钥(id_rsa.pub) 内容写入:
vi /home/sftpuser/.ssh/authorized_keys
设置权限:
chmod 600 /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpuser /home/sftpuser/.ssh
编辑 SSH 配置:
vi /etc/ssh/sshd_config
确认或添加以下内容:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
⚠️ 修改前建议先保留一个可登录的会话,防止锁死
Match User sftpuser
ForceCommand internal-sftp
PasswordAuthentication no
PubkeyAuthentication yes
ChrootDirectory /home/sftpuser
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory目录必须:
- 属主为
root- 权限为
755
chown root:root /home/sftpuser
chmod 755 /home/sftpuser
如果需要上传文件,可建子目录:
mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload
systemctl restart sshd
sftp -i ~/.ssh/id_rsa sftpuser@服务器IP
SSH 对权限非常严格:
.ssh → 700authorized_keys → 600restorecon -Rv /home/sftpuser/.ssh
firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload
如果你需要:
可以告诉我,我给你对应配置示例。