下面以 CentOS 7 / 8 / Stream 为例,说明如何配置 SFTP 使用密钥登录(并禁止密码登录,更安全)。
yum install -y openssh-server
systemctl enable sshd
systemctl start sshd
useradd -m sftpuser
若只用于 SFTP,可不设密码(但需有密码字段,可用
passwd sftpuser设复杂密码)
ssh-keygen -t rsa -b 4096
默认生成:
~/.ssh/id_rsa~/.ssh/id_rsa.pub.ppk(私钥)mkdir -p /home/sftpuser/.ssh
chmod 700 /home/sftpuser/.ssh
vi /home/sftpuser/.ssh/authorized_keys
# 粘贴客户端 id_rsa.pub 内容
chmod 600 /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpuser /home/sftpuser/.ssh
编辑配置文件:
vi /etc/ssh/sshd_config
确保以下配置:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no # 禁止密码登录(确认密钥可用后再改)
在 sshd_config 末尾添加:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
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
.ppk✅ 登录失败检查:
tail -f /var/log/secure
✅ 权限错误常见原因:
.ssh 不是 700authorized_keys 不是 600如果你需要:
可以继续问我。