温馨提示×

centos sftp证书怎样配置

小樊
44
2026-09-11 21:46:09
栏目: 智能运维

在 CentOS 上配置 SFTP 证书登录(基于 SSH 密钥),通常步骤如下(以使用 OpenSSH 自带 SFTP 为例,非 FTPS):


一、服务端准备(CentOS)

1. 安装 OpenSSH(一般已默认安装)

yum install -y openssh-server
systemctl enable sshd
systemctl start sshd

2. 创建 SFTP 用户

useradd sftpuser
passwd sftpuser   # 可设置密码,也可留空(仅密钥登录)

3. 创建密钥目录

mkdir -p /home/sftpuser/.ssh
chmod 700 /home/sftpuser/.ssh

二、生成 SFTP 证书(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

三、限制用户只能使用 SFTP(可选但推荐)

编辑 SSH 配置:

vi /etc/ssh/sshd_config

添加或修改:

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    PasswordAuthentication no
    PubkeyAuthentication yes

注意:

  • ChrootDirectory 属主必须是 root
chown root:root /home/sftpuser
chmod 755 /home/sftpuser
  • 用户实际可写目录需单独建:
mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload

四、重启 SSH 服务

systemctl restart sshd

五、客户端使用证书连接 SFTP

Linux / macOS

sftp -i id_rsa sftpuser@server_ip

Windows(WinSCP / FileZilla)

  • 协议:SFTP
  • 登录类型:密钥文件
  • 私钥:选择 id_rsa

六、常见问题排查

1. 权限错误

Authentication refused: bad ownership or modes for directory

解决:

  • .ssh 权限 700
  • authorized_keys 权限 600
  • Chroot 目录属主 root

2. SELinux 影响

setsebool -P ssh_chroot_rw_homedirs on

3. 防火墙

firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload

如果你指的是 FTPS(SSL 证书) 或 vsftpd + 证书,请告诉我,我可以给你另一套配置方案。

0 踩