温馨提示×

centos能否配置sftp公钥

小樊
35
2026-10-20 12:40:36
栏目: 智能运维

可以的,CentOS 完全可以配置 SFTP 公钥登录,而且这是非常常见、推荐的做法(比密码登录更安全)。

下面给你一个清晰、可用的配置流程(以 CentOS 7 / 8 / Stream 为例)。


一、前提条件

  • 已安装并运行 sshd
  • 你有一台客户端机器(生成密钥用)
  • 服务器用户已存在(如 sftpuser)

二、在客户端生成密钥(如果还没有)

在你的本地电脑执行:

ssh-keygen -t rsa -b 4096

默认会生成:

  • ~/.ssh/id_rsa(私钥)
  • ~/.ssh/id_rsa.pub(公钥)

三、在 CentOS 上配置 SFTP 用户

1. 创建 SFTP 用户(示例)

useradd sftpuser
passwd sftpuser   # 可设可不设(公钥登录可不设密码)

2. 创建 .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-copy-id sftpuser@服务器IP

四、限制 SFTP 用户(可选但推荐)

如果你希望该用户只能 SFTP,不能 SSH 登录:

1. 修改 sshd 配置

vi /etc/ssh/sshd_config

添加或修改:

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

2. 设置 Chroot 权限(非常重要)

chown root:root /home/sftpuser
chmod 755 /home/sftpuser

mkdir /home/sftpuser/upload
chown sftpuser:sftpuser /home/sftpuser/upload

五、重启 SSH 服务

systemctl restart sshd

六、测试 SFTP 公钥登录

sftp sftpuser@服务器IP

如果配置正确,不会再提示输入密码。


七、常见问题

✅ 权限错误(最常见)

  • .ssh 必须是 700
  • authorized_keys 必须是 600
  • ChrootDirectory 属主必须是 root

✅ SELinux(CentOS 默认开启)
如登录异常:

restorecon -Rv /home/sftpuser/.ssh

如果你愿意,我可以:

  • 帮你写 一键脚本
  • 按你目前 SSH 配置帮你检查是否正确
  • 区分 仅 SFTP / 可 SSH 两种方案

你现在是 CentOS 几?是否已有 SFTP 在跑?

0 踩