温馨提示×

CentOS SSH密钥登录如何配置

小樊
70
2026-08-03 03:24:24
栏目: 智能运维

下面以 CentOS 7 / 8 / Stream 为例,详细说明如何配置 SSH 密钥登录(更安全、推荐替代密码登录)。


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

如果已有密钥可跳过此步。

ssh-keygen -t rsa -b 4096

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

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

可选:设置密钥密码(passphrase)提升安全性


二、将公钥上传到 CentOS 服务器

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

ssh-copy-id user@server_ip

示例:

ssh-copy-id root@192.168.1.100

✅ 方法 2:手动上传

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

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

编辑 SSH 配置文件:

vi /etc/ssh/sshd_config

确保以下配置存在并正确:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no   # 想禁用密码登录(可选但推荐)
PermitRootLogin yes          # 若允许 root 登录

⚠️ 修改前建议先保留一个 SSH 会话,防止被锁外面


四、重启 SSH 服务

systemctl restart sshd

检查状态:

systemctl status sshd

五、测试 SSH 密钥登录

在客户端执行:

ssh user@server_ip

✅ 如果不再提示输入密码,说明配置成功。


六、常见问题排查

1️⃣ 仍然要求输入密码

检查:

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

权限必须:

.ssh → 700
authorized_keys → 600

2️⃣ SELinux 导致失败(CentOS 常见)

restorecon -Rv ~/.ssh

3️⃣ 查看 SSH 登录日志

tail -f /var/log/secure

七、安全加固建议(强烈推荐)

  • ✅ 禁用密码登录
  • ✅ 修改默认 SSH 端口
  • ✅ 使用普通用户 + sudo
  • ✅ 配置防火墙(firewalld / iptables)

如果你需要:

  • 只允许密钥登录
  • 禁止 root 登录
  • 配置多用户密钥
  • 使用 ed25519 密钥

可以直接告诉我你的 CentOS 版本和使用场景,我可以给你定制配置。

0