1、本地电脑生成密匙文件
# 登录客户端机器,执行以下命令(一路回车使用默认值) ssh-keygen -t ed25519 -C "your_email@example.com" # 或 RSA:-t rsa -b 4096 # 说明: # - -t:指定密钥类型(ed25519 或 rsa) # - -C:注释(可选,通常填写邮箱方便识别) # - 默认保存路径:~/.ssh/id_ed25519(私钥) 和 ~/.ssh/id_ed25519.pub(公钥)
生成后的位置C:\Users\齐磊\.ssh #齐磊这个是你当前电脑用户名
2. 将公钥上传到 CentOS 8 服务器
1、SSH登录服务器,执行su - root
2、创建/编辑 ~/.ssh/authorized_keys 文件
# 创建 .ssh 目录(若不存在)并设置权限 mkdir -p ~/.ssh chmod 700 ~/.ssh
3、将公钥内容追加到 authorized_keys 文件
echo "粘贴你的公钥内容" >> ~/.ssh/authorized_keys
4、设置 authorized_keys 文件权限(必须为 600)
chmod 600 ~/.ssh/authorized_keys
3. 验证权限是否正确
在服务器终端中,检查 .ssh
目录和 authorized_keys
文件的权限是否符合要求:
ls -ld ~/.ssh # 应显示 drwx------ ls -l ~/.ssh/authorized_keys # 应显示 -rw-------
4. 配置 SSH 服务(服务器端)
# 服务器端执行(需 root 权限) sudo vi /etc/ssh/sshd_config
找到并修改以下配置(若不存在则添加):
# 启用密钥认证(默认已启用,无需修改) PubkeyAuthentication yes # 启用密码认证(默认已启用,若被禁用需改为 yes) PasswordAuthentication yes # 可选:限制仅允许特定用户/组使用密码认证(按需调整) # PasswordAuthentication yes # AllowUsers user1 user2@ip # 仅允许 user1 或 user2 从指定 IP 登录 # DenyGroups bad_group # 拒绝某些组 # 其他优化(可选): # 禁用 root 直接密码登录(增强安全,但非必须) # PermitRootLogin prohibit-password # root 只能通过密钥登录,不能密码登录 # 禁用旧版 SSH 协议(推荐)
保存并退出(vi
中按 ESC
,输入 :wq
回车)。
5. 重启 SSH 服务使配置生效
sudo systemctl restart sshd # 重启服务 sudo systemctl status sshd # 检查服务状态(确保 Active: active (running))
测试密匙登录
# 客户端执行(使用私钥登录,若私钥非默认路径需用 -i 指定) ssh -i ~/.ssh/id_ed25519 username@server_ip # 若私钥是默认路径(~/.ssh/id_ed25519),直接执行: ssh username@server_ip
- 成功登录说明密钥认证已生效。
测试密码登录
# 客户端执行(输入服务器密码登录) ssh username@server_ip
- 输入密码后成功登录,说明密码认证仍有效。
六、常见问题排查
- 权限错误:若 SSH 提示“Permission denied (publickey)”,检查服务器端:
.ssh
目录权限必须是700
(drwx------
)。authorized_keys
文件权限必须是600
(-rw-------
)。- 公钥内容是否完整(无多余空格或换行)。
- SELinux 限制:若服务器启用了 SELinux,可能需要修复上下文:
sudo restorecon -Rv ~/.ssh # 重置 .ssh 目录的 SELinux 上下文

博主微信
这是我的微信扫一扫
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏