下面分 CentOS 7 / 8(含 Rocky / Alma) 场景,说明 SSH 免密登录 的完整做法,适用于 从客户端 → 服务器 的免密登录。
SSH 免密登录使用的是 公钥认证:
~/.ssh/authorized_keysroot 或普通用户(如 centos)在 客户端机器 执行:
ssh-keygen -t rsa -b 4096
一路回车即可,默认生成:
~/.ssh/id_rsa # 私钥
~/.ssh/id_rsa.pub # 公钥
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
编辑配置文件:
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
✅ 不再提示输入密码即成功。
检查权限(非常常见):
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
restorecon -Rv ~/.ssh
ssh -vvv user@server_ip
for host in server1 server2 server3; do
ssh-copy-id user@$host
done
600PasswordAuthentication no
如果你愿意,可以告诉我:
我可以给你更精确的命令。