温馨提示×

centos sftp密钥怎么用

小樊
34
2026-10-14 18:44:21
栏目: 智能运维

在 CentOS 上使用 SFTP 密钥登录,本质是:用 SSH 密钥代替密码进行认证。下面按步骤说明,适用于 CentOS 7 / 8 / Stream。


一、在客户端生成密钥(推荐在本地电脑或客户端做)

ssh-keygen -t rsa -b 4096

一路回车即可,默认生成:

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

⚠️ 私钥不要给别人


二、把公钥传到 CentOS 服务器

方法 1:使用 ssh-copy-id(最简单)

ssh-copy-id user@服务器IP

输入一次密码后,以后即可密钥登录。

方法 2:手动复制

在服务器上:

mkdir -p ~/.ssh
chmod 700 ~/.ssh

把客户端 id_rsa.pub 内容追加到:

~/.ssh/authorized_keys
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️⃣ 命令行 SFTP

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

2️⃣ FileZilla 使用密钥

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

3️⃣ WinSCP

  • 文件协议:SFTP
  • 高级 → SSH → 认证 → 私钥文件
  • 选择 id_rsa 或 ppk(可用 PuTTY 转换)

五、常见问题排查

❌ 权限错误(最常见)

服务器上必须保证:

chmod 700 /home/user
chmod 700 /home/user/.ssh
chmod 600 /home/user/.ssh/authorized_keys

❌ SELinux 导致失败

restorecon -Rv ~/.ssh

❌ 仍然提示密码

ssh -i id_rsa user@IP -v

看调试信息,通常是权限或配置问题。


六、只给 SFTP 权限(不可 SSH 登录,进阶)

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

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

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

  • 你是 客户端 Windows 还是 Linux
  • 是 个人使用还是多用户 SFTP
  • 是否要 禁止 SSH 只留 SFTP

我可以给你更精确的配置示例。

0 踩