下面是在 CentOS 上开启 **SSH 密钥认证(公钥登录)**的完整步骤,适用于 CentOS 7 / 8 / Stream。
如果你已经生成过,可以跳过。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
一路回车即可,默认生成:
~/.ssh/id_rsa~/.ssh/id_rsa.pubssh-copy-id user@server_ip
示例:
ssh-copy-id root@192.168.1.100
.ssh 目录(如果没有):mkdir -p ~/.ssh
chmod 700 ~/.ssh
id_rsa.pub 内容追加到服务器:echo "ssh-rsa AAAA..." >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
编辑配置文件:
vi /etc/ssh/sshd_config
确保以下配置(去掉注释或修改):
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
可选(提高安全性):
PasswordAuthentication no # 关闭密码登录(确认密钥可用后再改)
PermitRootLogin yes # 或 without-password
systemctl restart sshd
systemctl status sshd
从客户端连接:
ssh user@server_ip
✅ 如果不再提示输入密码,说明密钥认证成功。
检查:
ls -ld ~/.ssh
ls -l ~/.ssh/authorized_keys
正确权限:
drwx------ ~/.ssh
-rw------- ~/.ssh/authorized_keys
修复:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
restorecon -Rv ~/.ssh
tail -f /var/log/secure
✅ 使用普通用户 + sudo
✅ 禁用 root 密码登录
✅ 修改默认 SSH 端口
✅ 配合防火墙(firewalld)
如果你愿意,我可以帮你:
你现在用的是 CentOS 7 还是 8 / Stream?