温馨提示×

centos sftp怎样配密钥

小樊
36
2026-10-14 18:48:20
栏目: 智能运维

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


一、服务器端准备(CentOS)

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

useradd sftpuser
passwd sftpuser   # 如果只使用密钥,可不设密码

2. 生成密钥对(在客户端或服务器均可)

推荐在客户端生成:

ssh-keygen -t rsa -b 4096

生成后:

  • id_rsa(私钥,放在客户端)
  • id_rsa.pub(公钥,传到服务器)

二、配置服务器公钥

1. 创建 .ssh 目录

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

2. 写入公钥

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)

1. 修改 SSH 配置

vi /etc/ssh/sshd_config

确保以下配置存在:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

2. (可选)限制 SFTP 用户只能 SFTP

Match User sftpuser
    PasswordAuthentication no
    ForceCommand internal-sftp
    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

sftp -i /path/to/id_rsa sftpuser@server_ip

或用 FileZilla / WinSCP:

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

六、排查常见问题

  • 权限问题(最常见)
    • .ssh 700
    • authorized_keys 600
    • ChrootDirectory 属主为 root
  • 查看日志:
tail -f /var/log/secure

如果你需要 只允许 SFTP、禁止 SSH shell,或 多用户 SFTP 隔离目录,我可以进一步给你完整配置示例。

0 踩