您好,登录后才能下订单哦!
# 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
在本地机器上执行(以Linux/macOS为例):
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
参数说明:
- -t rsa
:指定RSA算法
- -b 4096
:设置密钥长度为4096位
- -C
:添加注释(通常为邮箱)
默认保存在~/.ssh/
目录:
- 私钥:id_rsa
- 公钥:id_rsa.pub
生成过程中会提示设置密钥密码(passphrase),建议设置以增加安全性。
ssh-copy-id username@server_ip
首次连接需要输入用户密码,成功后公钥会自动添加到服务器的~/.ssh/authorized_keys
文件。
如果ssh-copy-id
不可用:
cat ~/.ssh/id_rsa.pub
~/.ssh/authorized_keys
:mkdir -p ~/.ssh
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
编辑/etc/ssh/sshd_config
:
sudo vim /etc/ssh/sshd_config
关键配置项:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no # 禁用密码登录(确认密钥可用后再设置)
PermitRootLogin no # 建议禁用root直接登录
sudo systemctl restart sshd
ssh username@server_ip
如果设置了密钥密码,首次连接需要输入。
使用-v
参数查看详细日志:
ssh -v username@server_ip
常见问题:
- 权限问题:确保~/.ssh
目录权限为700,authorized_keys
为600
- SELinux阻止:尝试restorecon -Rv ~/.ssh
创建~/.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
更安全的密钥类型:
ssh-keygen -t ed25519 -C "your_email@example.com"
避免重复输入密钥密码:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
sudo grep 'sshd' /var/log/secure
错误信息 | 可能原因 | 解决方案 |
---|---|---|
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 |
如果锁定了服务器:
sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
sudo systemctl restart sshd
- 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') }}"
#!/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"
通过本文,您已经学会了在CentOS 8上配置SSH密钥认证的完整流程。密钥认证不仅提升了安全性,还为自动化管理提供了便利。建议:
注意:操作关键系统前,建议先在测试环境验证,并确保有备用的访问方式。
命令 | 描述 |
---|---|
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密钥配置的完整流程,从基础概念到高级应用,并提供了故障排除和自动化部署等实用内容。文章采用清晰的层级结构,适合作为技术文档使用。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。