温馨提示×

centos sftp密钥登录怎么弄

小樊
45
2026-09-11 21:35:10
栏目: 智能运维

下面以 CentOS 7 / 8 / Stream 为例,说明如何配置 SFTP 使用密钥登录(并禁止密码登录,更安全)。


一、服务端准备(CentOS)

1. 安装并启动 SSH

yum install -y openssh-server
systemctl enable sshd
systemctl start sshd

2. 创建 SFTP 用户(如 sftpuser)

useradd -m sftpuser

若只用于 SFTP,可不设密码(但需有密码字段,可用 passwd sftpuser 设复杂密码)


二、客户端生成密钥(在本地电脑)

Linux / macOS

ssh-keygen -t rsa -b 4096

默认生成:

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

Windows(PuTTY)

  • PuTTYgen 生成
  • 保存 .ppk(私钥)
  • 复制公钥文本

三、把公钥放到服务器

方法 1:手动上传

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

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

确保以下配置:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no   # 禁止密码登录(确认密钥可用后再改)

五、限制为 SFTP(可选但推荐)

1. 创建 SFTP 专用配置

sshd_config 末尾添加:

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

2. 修复目录权限(非常重要)

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

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

六、重启 SSH

systemctl restart sshd

七、客户端登录测试

Linux / macOS

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

Windows(FileZilla)

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

八、常见问题

✅ 登录失败检查:

tail -f /var/log/secure

✅ 权限错误常见原因:

  • .ssh 不是 700
  • authorized_keys 不是 600
  • Chroot 目录属主不是 root

如果你需要:

  • 只允许 SFTP 不能 SSH
  • 多用户隔离
  • Docker / Kubernetes 环境

可以继续问我。

0