温馨提示×

centos sftp密钥怎样配置

小樊
41
2026-09-09 00:27:39
栏目: 智能运维

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


一、服务器端准备(CentOS)

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

useradd -m sftpuser
passwd sftpuser   # 如果只允许密钥登录,可不设密码或设复杂密码

2. 配置 SSH 目录和密钥

mkdir -p /home/sftpuser/.ssh
chmod 700 /home/sftpuser/.ssh
touch /home/sftpuser/.ssh/authorized_keys
chmod 600 /home/sftpuser/.ssh/authorized_keys
chown -R sftpuser:sftpuser /home/sftpuser/.ssh

3. 放入客户端公钥

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

/home/sftpuser/.ssh/authorized_keys

示例:

echo "ssh-rsa AAAA......" >> /home/sftpuser/.ssh/authorized_keys

二、客户端生成密钥(Windows / Linux)

Linux / macOS

ssh-keygen -t rsa -b 4096

生成:

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

Windows(Win10+)

ssh-keygen

三、限制 SFTP 只能使用密钥(推荐)

1. 编辑 SSH 配置

vi /etc/ssh/sshd_config

确保或添加:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no   # 禁止密码登录(可选)

2. 限制 SFTP 用户(可选,安全增强)

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

⚠️ 注意:

  • 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

五、客户端连接测试

Linux

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

Windows(FileZilla)

  • 协议:SFTP
  • 登录类型:密钥文件
  • 用户:sftpuser
  • 密钥文件:id_rsa

六、常见问题排查

# 查看 SSH 日志
tail -f /var/log/secure

# 权限问题常见原因
# .ssh 700
# authorized_keys 600
# chroot 目录 root 拥有

如果你需要 只给 SFTP 不给 SSH多用户隔离、或 使用 ED25519 密钥,我可以继续细化配置。

0