在 CentOS 上配置 SFTP 证书登录(基于 SSH 密钥),通常步骤如下(以使用 OpenSSH 自带 SFTP 为例,非 FTPS):
yum install -y openssh-server
systemctl enable sshd
systemctl start sshd
useradd sftpuser
passwd sftpuser # 可设置密码,也可留空(仅密钥登录)
mkdir -p /home/sftpuser/.ssh
chmod 700 /home/sftpuser/.ssh
在 客户端机器 执行:
ssh-keygen -t rsa -b 4096
生成:
id_rsa(私钥,保存好)id_rsa.pub(公钥,上传到服务器)将公钥上传到服务器:
ssh-copy-id sftpuser@server_ip
或手动复制:
cat id_rsa.pub >> /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
添加或修改:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
PasswordAuthentication no
PubkeyAuthentication yes
注意:
ChrootDirectory属主必须是 rootchown root:root /home/sftpuser chmod 755 /home/sftpuser
- 用户实际可写目录需单独建:
mkdir /home/sftpuser/upload chown sftpuser:sftpuser /home/sftpuser/upload
systemctl restart sshd
sftp -i id_rsa sftpuser@server_ip
id_rsaAuthentication refused: bad ownership or modes for directory
解决:
.ssh 权限 700authorized_keys 权限 600setsebool -P ssh_chroot_rw_homedirs on
firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload
如果你指的是 FTPS(SSL 证书) 或 vsftpd + 证书,请告诉我,我可以给你另一套配置方案。