温馨提示×

SFTP密钥怎么在CentOS配置

小樊
47
2026-07-08 18:08:25
栏目: 智能运维

下面给你一个在 CentOS 上配置 SFTP 密钥登录的完整流程,适用于 CentOS 7 / 8 / Stream,默认以 OpenSSH 为例。


一、整体思路

  1. 客户端生成 SSH 密钥对
  2. 公钥放到 CentOS 服务器对应用户下
  3. 服务器禁用密码登录(可选,提高安全性)
  4. 使用 SFTP 客户端通过密钥连接

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

如果你已经在服务器上操作,也可以直接在服务器生成,再下载私钥

ssh-keygen -t rsa -b 4096

一路回车即可,会生成:

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

⚠️ 私钥一定要保密


三、上传公钥到 CentOS 服务器

方法 1:自动上传(推荐)

ssh-copy-id user@服务器IP

示例:

ssh-copy-id root@192.168.1.10

方法 2:手动上传

  1. 登录服务器
  2. 创建 .ssh 目录并设置权限
mkdir -p ~/.ssh
chmod 700 ~/.ssh
  1. 把公钥内容写入 authorized_keys
echo "ssh-rsa AAAA..." >> ~/.ssh/authorized_keys
  1. 设置权限(非常重要)
chmod 600 ~/.ssh/authorized_keys

四、服务器 SSH 配置(关键)

编辑配置文件:

vi /etc/ssh/sshd_config

确认或添加以下内容:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

(可选)禁用密码登录(确认密钥可用后再改):

PasswordAuthentication no

重启 SSH 服务:

systemctl restart sshd

五、使用 SFTP 连接(密钥方式)

1️⃣ Linux / macOS 命令行

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

2️⃣ Windows(WinSCP / FileZilla)

WinSCP

  • 协议:SFTP
  • 登录类型:密钥文件
  • 私钥文件:选择 id_rsa
  • 用户:服务器用户名

FileZilla

  • 编辑 → 设置 → SFTP
  • 添加密钥文件(id_rsa)
  • 主机:sftp://IP
  • 登录类型:密钥文件

六、常见问题排查

❌ 还是提示输入密码

检查:

ls -ld ~/.ssh
ls -l ~/.ssh/authorized_keys

权限必须是:

.ssh → 700
authorized_keys → 600

❌ SELinux 导致失败

restorecon -Rv ~/.ssh

❌ SSH 日志查看

tail -f /var/log/secure

七、只给 SFTP、禁止 SSH(可选)

如果你只想让用户 SFTP 登录,不能 SSH

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

八、总结(最简步骤)

ssh-keygen
ssh-copy-id user@ip
systemctl restart sshd
sftp user@ip

如果你愿意,可以告诉我:

  • ✅ CentOS 版本
  • ✅ 是否只允许 SFTP(不能 SSH)
  • ✅ 是给开发 / 运维 / 程序自动同步用

我可以按你的场景给你定制配置方案

0