CentOS8中怎么设置SSH密钥

发布时间:2022-02-02 15:04:10 作者:小新
来源:亿速云 阅读:495
# CentOS8中怎么设置SSH密钥

## 1. SSH密钥认证简介

### 1.1 什么是SSH密钥认证
SSH(Secure Shell)密钥认证是一种比传统密码认证更安全的远程登录方式。它采用非对称加密技术,通过公钥和私钥配对实现身份验证:

- **公钥**:存储在服务器上,用于加密数据
- **私钥**:保留在客户端,用于解密数据

### 1.2 为什么使用密钥认证
相比密码认证,SSH密钥具有以下优势:

1. **更高的安全性**:密钥长度通常为2048或4096位,暴力破解几乎不可能
2. **防中间人攻击**:基于密钥指纹验证服务器身份
3. **便于自动化**:适合脚本和自动化工具使用
4. **可禁用密码登录**:降低暴力破解风险

## 2. 环境准备

### 2.1 系统要求
- 已安装CentOS 8的服务器
- 具有sudo权限的用户账户
- 本地客户端机器(Windows/macOS/Linux)

### 2.2 检查SSH服务状态
```bash
sudo systemctl status sshd

如果服务未运行,启动并启用开机自启:

sudo systemctl start sshd
sudo systemctl enable sshd

3. 生成SSH密钥对

3.1 在客户端生成密钥

在本地机器上执行(以Linux/macOS为例):

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

参数说明: - -t rsa:指定RSA算法 - -b 4096:设置密钥长度为4096位 - -C:添加注释(通常为邮箱)

3.2 密钥保存位置

默认保存在~/.ssh/目录: - 私钥:id_rsa - 公钥:id_rsa.pub

3.3 设置密钥密码(可选)

生成过程中会提示设置密钥密码(passphrase),建议设置以增加安全性。

4. 将公钥上传到服务器

4.1 使用ssh-copy-id(推荐方法)

ssh-copy-id username@server_ip

首次连接需要输入用户密码,成功后公钥会自动添加到服务器的~/.ssh/authorized_keys文件。

4.2 手动上传方法

如果ssh-copy-id不可用:

  1. 显示公钥内容:
cat ~/.ssh/id_rsa.pub
  1. 登录服务器,编辑~/.ssh/authorized_keys
mkdir -p ~/.ssh
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys
  1. 粘贴公钥内容,保存后设置权限:
chmod 600 ~/.ssh/authorized_keys

5. 服务器端配置

5.1 修改SSH配置文件

编辑/etc/ssh/sshd_config

sudo vim /etc/ssh/sshd_config

关键配置项:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no  # 禁用密码登录(确认密钥可用后再设置)
PermitRootLogin no         # 建议禁用root直接登录

5.2 重启SSH服务

sudo systemctl restart sshd

6. 测试连接

6.1 基本连接测试

ssh username@server_ip

如果设置了密钥密码,首次连接需要输入。

6.2 调试连接问题

使用-v参数查看详细日志:

ssh -v username@server_ip

常见问题: - 权限问题:确保~/.ssh目录权限为700,authorized_keys为600 - SELinux阻止:尝试restorecon -Rv ~/.ssh

7. 高级配置

7.1 多密钥管理

创建~/.ssh/config文件管理多个服务器:

Host server1
    HostName 192.168.1.100
    User user1
    IdentityFile ~/.ssh/id_rsa_server1

Host server2
    HostName example.com
    User user2
    IdentityFile ~/.ssh/id_ed25519_server2

7.2 使用Ed25519算法

更安全的密钥类型:

ssh-keygen -t ed25519 -C "your_email@example.com"

7.3 密钥代理(ssh-agent)

避免重复输入密钥密码:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

8. 安全最佳实践

  1. 定期轮换密钥:每3-6个月更换一次密钥
  2. 使用强密码:密钥密码应足够复杂
  3. 限制访问IP:结合防火墙规则
  4. 监控登录尝试
    
    sudo grep 'sshd' /var/log/secure
    
  5. 备份密钥:安全存储私钥备份

9. 故障排除

9.1 常见错误及解决方案

错误信息 可能原因 解决方案
Permission denied (publickey) 1. 公钥未正确安装
2. 文件权限问题
3. SELinux限制
1. 检查authorized_keys内容
2. 修正文件权限
3. restorecon -Rv ~/.ssh
Agent admitted failure to sign ssh-agent未加载密钥 执行ssh-add命令
Connection closed by remote host 服务器SSH配置错误 检查/etc/ssh/sshd_config

9.2 紧急恢复

如果锁定了服务器:

  1. 通过控制台或VNC直接访问
  2. 临时启用密码认证:
    
    sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
    sudo systemctl restart sshd
    

10. 自动化部署示例

10.1 使用Ansible批量部署

- hosts: all
  tasks:
    - name: Ensure .ssh directory exists
      file:
        path: ~/.ssh
        state: directory
        mode: '0700'
    
    - name: Add authorized key
      authorized_key:
        user: "{{ ansible_user }}"
        state: present
        key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"

10.2 Shell脚本示例

#!/bin/bash
USER="youruser"
SERVER_IP="192.168.1.100"
PUB_KEY=$(cat ~/.ssh/id_rsa.pub)

ssh $USER@$SERVER_IP "mkdir -p ~/.ssh && echo '$PUB_KEY' >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

11. 可视化工具支持

11.1 Windows客户端

11.2 macOS

12. 总结

通过本文,您已经学会了在CentOS 8上配置SSH密钥认证的完整流程。密钥认证不仅提升了安全性,还为自动化管理提供了便利。建议:

  1. 所有生产服务器都应使用密钥认证
  2. 禁用密码认证前确保密钥可用
  3. 建立完善的密钥管理制度

注意:操作关键系统前,建议先在测试环境验证,并确保有备用的访问方式。

附录:常用命令速查表

命令 描述
ssh-keygen -t rsa -b 4096 生成RSA密钥
ssh-copy-id user@host 上传公钥
ssh -i ~/.ssh/key.pem user@host 指定密钥连接
ssh-add -l 列出加载的密钥
ssh -T git@github.com 测试GitHub连接

”`

这篇约2600字的Markdown格式文章包含了SSH密钥配置的完整流程,从基础概念到高级应用,并提供了故障排除和自动化部署等实用内容。文章采用清晰的层级结构,适合作为技术文档使用。

推荐阅读:
  1. MAC SSH密钥登陆
  2. SSH之密钥登陆

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

centos8 ssh

上一篇:Linux mkinitrd命令怎么使用

下一篇:Linux pyDash怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》