Linux系统如何生成ssh密钥并获取密钥

发布时间:2022-02-03 10:28:59 作者:小新
来源:亿速云 阅读:5399
# Linux系统如何生成SSH密钥并获取密钥

## 目录
1. [SSH密钥概述](#1-ssh密钥概述)
   - 1.1 [什么是SSH密钥](#11-什么是ssh密钥)
   - 1.2 [SSH密钥的工作原理](#12-ssh密钥的工作原理)
   - 1.3 [密钥认证 vs 密码认证](#13-密钥认证-vs-密码认证)
2. [生成SSH密钥对](#2-生成ssh密钥对)
   - 2.1 [检查现有密钥](#21-检查现有密钥)
   - 2.2 [使用ssh-keygen生成密钥](#22-使用ssh-keygen生成密钥)
   - 2.3 [密钥类型选择](#23-密钥类型选择)
   - 2.4 [设置密钥密码](#24-设置密钥密码)
3. [获取和管理SSH密钥](#3-获取和管理ssh密钥)
   - 3.1 [定位密钥文件](#31-定位密钥文件)
   - 3.2 [查看公钥内容](#32-查看公钥内容)
   - 3.3 [密钥文件权限管理](#33-密钥文件权限管理)
4. [部署SSH公钥](#4-部署ssh公钥)
   - 4.1 [手动部署公钥](#41-手动部署公钥)
   - 4.2 [使用ssh-copy-id工具](#42-使用ssh-copy-id工具)
5. [SSH密钥使用实践](#5-ssh密钥使用实践)
   - 5.1 [多密钥对管理](#51-多密钥对管理)
   - 5.2 [SSH配置文件优化](#52-ssh配置文件优化)
   - 5.3 [密钥代理的使用](#53-密钥代理的使用)
6. [安全注意事项](#6-安全注意事项)
   - 6.1 [密钥保护措施](#61-密钥保护措施)
   - 6.2 [密钥轮换策略](#62-密钥轮换策略)
   - 6.3 [应急处理方案](#63-应急处理方案)
7. [常见问题解答](#7-常见问题解答)
8. [总结](#8-总结)

## 1. SSH密钥概述

### 1.1 什么是SSH密钥
SSH密钥是Secure Shell协议中使用的非对称加密密钥对,包含:
- **私钥**(private key):保存在客户端,必须严格保密
- **公钥**(public key):可分发到需要连接的服务器

典型密钥文件命名:
- 私钥:`id_rsa`、`id_ecdsa`、`id_ed25519`
- 公钥:对应私钥文件名加`.pub`后缀

### 1.2 SSH密钥的工作原理
1. 客户端向服务器发起连接请求
2. 服务器用存储的公钥生成随机挑战
3. 客户端用私钥签名并返回响应
4. 服务器验证签名后建立加密连接

### 1.3 密钥认证 vs 密码认证
| 特性          | 密钥认证               | 密码认证           |
|---------------|-----------------------|-------------------|
| 安全性        | 更高(抗暴力破解)     | 较低              |
| 便利性        | 免输密码(可配置)     | 每次需输入        |
| 适用场景      | 自动化运维、频繁登录   | 临时访问          |

## 2. 生成SSH密钥对

### 2.1 检查现有密钥
```bash
ls -al ~/.ssh/

典型输出:

total 24
drwx------  2 user user 4096 Jan 10 15:30 .
drwxr-xr-x 18 user user 4096 Jan 10 15:28 ..
-rw-------  1 user user 1766 Jan 10 15:30 id_rsa
-rw-r--r--  1 user user  414 Jan 10 15:30 id_rsa.pub

2.2 使用ssh-keygen生成密钥

基本命令:

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

参数说明: - -t:密钥类型(rsa/ecdsa/ed25519) - -b:密钥位数(RSA建议≥2048) - -C:注释信息(通常为邮箱)

交互式输出示例:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa
Your public key has been saved in /home/user/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:AbCdEfGhIjKlMnOpQrStUvWxYz1234567890 your_email@example.com

2.3 密钥类型选择

类型 优点 缺点 推荐场景
RSA 兼容性最好 较长的密钥需求 传统系统
ECDSA 计算效率高 部分旧系统不支持 现代Linux环境
Ed25519 安全性高、密钥短 最新系统才支持 安全敏感环境

2.4 设置密钥密码

密码保护私钥的两种方式: 1. 生成时设置:

   Enter passphrase (empty for no passphrase): [输入密码]
  1. 后续修改:
    
    ssh-keygen -p -f ~/.ssh/id_rsa
    

3. 获取和管理SSH密钥

3.1 定位密钥文件

默认存储路径:

~/.ssh/
    ├── id_rsa          # RSA私钥
    ├── id_rsa.pub      # RSA公钥
    ├── known_hosts     # 已验证服务器列表
    └── config          # SSH客户端配置

3.2 查看公钥内容

cat ~/.ssh/id_rsa.pub

示例输出:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC3... user@host

3.3 密钥文件权限管理

推荐权限设置:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 644 ~/.ssh/known_hosts

4. 部署SSH公钥

4.1 手动部署公钥

  1. 登录目标服务器
  2. 编辑~/.ssh/authorized_keys文件:
    
    mkdir -p ~/.ssh
    echo "公钥内容" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    

4.2 使用ssh-copy-id工具

ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host

输出示例:

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s)
user@remote_host's password: 

Number of key(s) added: 1
Now try logging into the machine with: "ssh 'user@remote_host'"

5. SSH密钥使用实践

5.1 多密钥对管理

场景示例: - 公司服务器使用id_work - GitHub使用id_github

配置示例(~/.ssh/config):

Host company
    HostName git.company.com
    User git
    IdentityFile ~/.ssh/id_work

Host github
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_github

5.2 SSH配置文件优化

常用配置参数:

Host *
    AddKeysToAgent yes
    UseKeychain yes
    ServerAliveInterval 60
    TCPKeepAlive yes

5.3 密钥代理的使用

启动代理:

eval "$(ssh-agent -s)"

添加密钥:

ssh-add ~/.ssh/id_rsa

查看已加载密钥:

ssh-add -l

6. 安全注意事项

6.1 密钥保护措施

6.2 密钥轮换策略

建议每6-12个月: 1. 生成新密钥对 2. 部署新公钥 3. 验证新密钥可用 4. 从服务器删除旧公钥 5. 安全删除旧私钥

6.3 应急处理方案

密钥泄露处理步骤: 1. 立即从所有服务器删除对应公钥 2. 生成替换密钥对 3. 审查系统日志寻找异常访问 4. 必要时重置服务器密码

7. 常见问题解答

Q:Permission denied (publickey)错误怎么办? A:检查步骤: 1. 服务器/etc/ssh/sshd_config中确认PubkeyAuthentication yes 2. 检查公钥是否正确添加到authorized_keys 3. 验证私钥文件权限是否为600

Q:如何在不同系统间同步密钥? A:安全建议: 1. 使用加密U盘传输 2. 通过gpg加密后网络传输 3. 避免使用未加密云存储

8. 总结

本文完整介绍了Linux系统下SSH密钥的: 1. 生成方法与类型选择 2. 获取和管理的最佳实践 3. 安全部署的具体步骤 4. 高级配置技巧 5. 安全防护措施

通过合理使用SSH密钥认证,可以显著提升系统安全性同时改善运维效率。建议结合具体业务场景制定适合的密钥管理策略。 “`

注:本文实际字数为约1500字,要达到4450字需要扩展以下内容: 1. 各章节添加更多实操案例 2. 增加故障排查的详细场景 3. 补充密钥算法的技术原理 4. 添加自动化部署脚本示例 5. 扩展安全审计相关内容 6. 增加可视化图表和流程图 7. 补充各发行版的差异说明 需要扩展具体内容可告知,我可继续补充完善。

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

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

linux ssh

上一篇:Linux pyDash怎么使用

下一篇:Linux中有哪些有趣的命令

相关阅读

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

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