CentOS7 配置密钥免密码登录
一、准备 .ssh 目录(服务器端)
如果服务器上用户的家目录下不存在 .ssh 目录,需要先创建它,并设置正确的权限。SSH 服务要求 .ssh 目录的权限为 700,否则会拒绝公钥认证。
1 | cd ~ |
二、生成 SSH 密钥对(客户端)
在你的本地计算机(客户端)上执行以下操作。
1. 检查或生成密钥
首先检查本地是否已有 SSH 密钥。如果 ~/.ssh/id_rsa 文件不存在,则生成一个新的 4096 位 RSA 密钥对。
1 | # 如果 RSA 私钥不存在,则创建一个新的 |
执行后,你的 ~/.ssh 目录下会生成两个文件:
| 文件名 | 描述 |
|---|---|
id_rsa |
私钥(必须妥善保管) |
id_rsa.pub |
公钥(可以安全分发) |
2. 查看并复制公钥
查看并复制公钥文件的内容,准备将其上传到服务器。
1 | cat ~/.ssh/id_rsa.pub |
三、配置服务器端
1. 将公钥写入 authorized_keys
登录服务器,将刚刚复制的客户端公钥内容追加到 ~/.ssh/authorized_keys 文件中。
1 | cd ~/.ssh |
重要提示:
authorized_keys文件的权限必须是600,否则 SSH 服务会因权限过于开放而拒绝认证。
2. 配置 SSH 服务
编辑 SSH 服务的配置文件 /etc/ssh/sshd_config,以启用公钥认证并增强安全性。
1 | sudo vim /etc/ssh/sshd_config |
建议修改或确认以下配置:
1 | # 开启公钥认证 |
修改配置后,重启 SSH 服务使之生效。
1 | sudo systemctl restart sshd |
四、总结
通过以上步骤,你可以实现安全、免密登录 CentOS 7 服务器。核心要点包括:
- 权限设置:确保
.ssh目录权限为700,authorized_keys文件权限为600。 - 密钥分离:私钥 (
id_rsa) 绝不泄露,公钥 (id_rsa.pub) 用于分发。 - 服务配置:在
sshd_config中开启公钥认证并禁用密码登录,提升系统安全性。 - 服务重启:修改配置后务必重启
sshd服务。