温馨提示×

centos sftp公钥登录如何配

小樊
42
2026-10-14 19:08:22
栏目: 智能运维

在 CentOS 上配置 SFTP 使用公钥登录(禁用密码登录),一般步骤如下:


一、服务端准备(CentOS)

1. 创建 SFTP 用户(如已存在可跳过)

useradd -m sftpuser
passwd sftpuser   # 先设置一次密码,后面可禁用

2. 创建 .ssh 目录并设置权限

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

3. 放入公钥

将客户端生成的 公钥(id_rsa.pub) 内容写入:

vi /home/sftpuser/.ssh/authorized_keys

设置权限:

chmod 600 /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpuser /home/sftpuser/.ssh

二、配置 SSH(关键)

编辑 SSH 配置:

vi /etc/ssh/sshd_config

确认或添加以下内容:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no

⚠️ 修改前建议先保留一个可登录的会话,防止锁死


三、限制 SFTP(可选但推荐)

方式一:仅 SFTP,禁止 SSH Shell

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

四、重启 SSH 服务

systemctl restart sshd

五、客户端测试

sftp -i ~/.ssh/id_rsa sftpuser@服务器IP

六、常见问题

1. 登录失败,权限问题

SSH 对权限非常严格:

  • .ssh → 700
  • authorized_keys → 600
  • home 目录不能被组/其他写

2. SELinux 影响

restorecon -Rv /home/sftpuser/.ssh

3. 防火墙

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

如果你需要:

  • 多用户 SFTP
  • 不同目录权限
  • Docker / Kubernetes 环境
  • Windows 客户端(WinSCP / FileZilla)

可以告诉我,我给你对应配置示例。

0 踩