在CentOS服务器上,默认的SSH密码登录方式存在被暴力破解的风险。通过密钥身份验证,用户可以使用公钥和私钥配对完成登录,既免去输入密码的麻烦,也大幅增强安全性。下面介绍具体的实施步骤。

生成SSH密钥对
在本地电脑的终端中执行以下命令生成密钥对,默认会生成在用户主目录的.ssh文件夹中:
ssh-keygen -t rsa -b 4096 -C "centos_login_key" # 按提示输入保存路径,可直接回车使用默认路径 # 设置私钥密码短语,也可留空
将公钥上传到CentOS服务器
使用ssh-copy-id工具可以把本地公钥追加到服务器的authorized_keys文件中:
ssh-copy-id user@服务器IP # 首次需要输入服务器用户的密码 # 成功后公钥已写入 ~/.ssh/authorized_keys
修改SSH服务配置
登录服务器,编辑/etc/ssh/sshd_config文件,确保以下配置项的值正确:
- PubkeyAuthentication 设为 yes
- PasswordAuthentication 设为 no
- PermitRootLogin 可根据需要设为 no
可以使用sed命令快速修改:
sudo sed -i 's/^#?PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config sudo sed -i 's/^#?PubkeyAuthentication no/PubkeyAuthentication yes/' /etc/ssh/sshd_config
重启SSH服务并验证
修改完成后重新加载SSH服务使配置生效:
sudo systemctl restart sshd
打开新终端窗口测试密钥登录,确认无需密码且能成功进入系统:
ssh user@服务器IP # 若设置了私钥密码短语,会提示输入该短语而非用户密码
常见问题处理
权限不正确导致登录失败
服务器端的.ssh目录权限应为700,authorized_keys文件权限应为600:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
临时保留密码登录
若担心密钥丢失,可在确认密钥可用后再将PasswordAuthentication改为no,避免被锁在服务器外。
密钥身份验证依赖非对称加密,私钥务必妥善保管,不要泄露给任何人。
小结
通过上述步骤,我们在CentOS上完成了基于密钥的SSH登录配置,并关闭了不安全的密码验证方式。这种方案能有效抵御大部分自动化破解攻击,是服务器安全运维的基础操作。
CentOSSSH密钥身份验证公钥sshd_config修改时间:2026-07-25 13:24:18