温馨提示×

centos sftp密钥怎么配置

小樊
41
2026-09-06 03:11:30
栏目: 智能运维

CentOS 上配置 SFTP 密钥登录(通常是基于 SSH 的密钥认证),可以按下面步骤来操作。


一、服务器端准备(CentOS)

1. 安装并启动 SSH 服务

一般 CentOS 已自带:

systemctl status sshd

如果没启动:

systemctl start sshd
systemctl enable sshd

2. 创建 SFTP 用户(可选)

useradd sftpuser
passwd sftpuser

3. 配置 SFTP 专用目录(推荐)

mkdir -p /data/sftp/sftpuser
chown root:root /data/sftp
chown sftpuser:sftpuser /data/sftp/sftpuser
chmod 755 /data/sftp
chmod 700 /data/sftp/sftpuser

二、客户端生成密钥

客户端机器(Windows / Linux / Mac)执行:

Linux / Mac

ssh-keygen -t rsa -b 4096

默认生成:

  • 私钥:~/.ssh/id_rsa
  • 公钥:~/.ssh/id_rsa.pub

Windows(PuTTY)

使用 PuTTYgen 生成:

  • 保存 .ppk(私钥)
  • 复制公钥内容

三、将公钥放入服务器

1. 创建 authorized_keys

在服务器上:

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

2. 写入公钥

vi /home/sftpuser/.ssh/authorized_keys

粘贴客户端 id_rsa.pub 内容

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

四、修改 SSH 配置(重要)

编辑:

vi /etc/ssh/sshd_config

1. 启用密钥登录

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

2. (可选)禁用密码登录

PasswordAuthentication no

3. (推荐)限制 SFTP 用户

Match User sftpuser
    ChrootDirectory /data/sftp
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no

4. 重启 SSH

systemctl restart sshd

五、客户端连接测试

Linux / Mac

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

Windows(FileZilla)

  • 协议:SFTP
  • 登录类型:密钥文件
  • 选择 .ppk

六、常见问题排查

1. 权限错误(最常见)

Permission denied (publickey)

检查:

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

2. SELinux

setsebool -P ssh_chroot_rw_homedirs on

如果你需要 只给 SFTP 不能 SSH多用户配置使用非默认端口,可以继续问我。

0