温馨提示×

CentOS SSH如何免密登录

小樊
36
2026-07-07 23:31:43
栏目: 智能运维

下面分 CentOS 7 / 8(含 Rocky / Alma) 场景,说明 SSH 免密登录 的完整做法,适用于 从客户端 → 服务器 的免密登录。


一、原理简述

SSH 免密登录使用的是 公钥认证

  • 客户端生成 公钥 / 私钥
  • 公钥 放到服务器的 ~/.ssh/authorized_keys
  • 登录时服务器用公钥验证客户端私钥

二、环境说明

  • 客户端:你当前操作的机器
  • 服务器:CentOS 目标机器
  • 用户:root 或普通用户(如 centos

三、客户端生成 SSH 密钥

客户端机器 执行:

ssh-keygen -t rsa -b 4096

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

~/.ssh/id_rsa       # 私钥
~/.ssh/id_rsa.pub   # 公钥

四、把公钥拷贝到 CentOS 服务器

✅ 方法一(推荐)

ssh-copy-id user@server_ip

示例:

ssh-copy-id root@192.168.1.10

输入一次服务器密码即可。


✅ 方法二(手动方式)

如果 ssh-copy-id 不可用:

1️⃣ 查看公钥

cat ~/.ssh/id_rsa.pub

2️⃣ 登录服务器

ssh user@server_ip

3️⃣ 在服务器执行:

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

4️⃣ 写入公钥

echo "ssh-rsa AAAA..." >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

五、服务器端 SSH 配置检查(重要)

编辑配置文件:

vi /etc/ssh/sshd_config

确保以下配置 未被注释

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

如果是 root 免密登录,还需:

PermitRootLogin yes

重启 SSH 服务:

# CentOS 7
systemctl restart sshd

# CentOS 8 / Rocky / Alma
systemctl restart sshd

六、测试免密登录

在客户端执行:

ssh user@server_ip

✅ 不再提示输入密码即成功。


七、常见问题排查

1️⃣ 仍然需要密码

检查权限(非常常见):

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

2️⃣ SELinux 问题

restorecon -Rv ~/.ssh

3️⃣ 查看详细错误

ssh -vvv user@server_ip

八、多台服务器批量免密(可选)

for host in server1 server2 server3; do
  ssh-copy-id user@$host
done

九、安全建议

  • ✅ 使用普通用户 + sudo
  • ✅ 私钥权限 600
  • ✅ 可禁用密码登录:
PasswordAuthentication no

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

  • CentOS 7 还是 8 / Rocky / Alma
  • root 还是普通用户
  • 本机 → 服务器 还是 服务器之间

我可以给你更精确的命令。

0