命令简介

ssh-keygen是一个用于创建SSH密钥对的命令行工具。它可以生成用于SSH加密通信的公钥和私钥,并提供了多种选项来自定义密钥的类型、长度、密码短语等。

命令格式

1
ssh-keygen [options]

参数说明

参数 说明 备注
-t dsa/ecdsa/ed25519/rsa 指定要创建的密钥类型 默认为rsa
-b bits 指定密钥长度(位) 对于RSA密钥,默认为3072位
-C comment 为公钥添加注释 通常用于标识密钥的用途或所有者
-f file 指定要创建的密钥文件路径 默认为$HOME/.ssh/id_type
-N phrase 为私钥设置密码短语 留空则不使用密码短语
-q 静默模式,不显示任何输出
-y 读取私钥并将公钥输出到stdout

命令实例

基本用法

1.创建默认RSA密钥对

1
ssh-keygen

该命令将在默认位置($HOME/.ssh/id_rsa)创建一个3072位的RSA密钥对。

2.创建具有密码短语的RSA密钥对

1
ssh-keygen -t rsa -b 4096 -C "my_key" -f ~/.ssh/my_key -N "password123"

上面的命令将创建一个4096位的RSA密钥对,文件路径为~/.ssh/my_key,并为私钥设置密码短语”password123”。

3.从私钥导出公钥

1
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

该命令将从私钥文件(/.ssh/id_rsa)导出对应的公钥,并将其保存到/.ssh/id_rsa.pub文件中。

4.创建Ed25519密钥对

1
ssh-keygen -t ed25519 -C "my_ed25519_key"

上面的命令将创建一个使用Ed25519算法的密钥对,并为公钥添加注释”my_ed25519_key”。

高级用法

1.使用密钥指纹验证密钥

1
2
3
4
5
6
7
8
9
10
# 生成密钥指纹
key_fingerprint=$(ssh-keygen -lf ~/.ssh/id_rsa.pub | awk '{print $2}')

# 验证密钥指纹
if [ "$key_fingerprint" = "abcd1234..." ]; then
echo "Key fingerprint matches, proceeding with deployment."
# 执行部署操作
else
echo "Key fingerprint does not match, aborting deployment."
fi

上面的示例展示了如何使用ssh-keygen生成密钥指纹,并将其与已知的指纹进行比对,以验证密钥的真实性。这种方式可以用于确保在自动化部署过程中使用的是正确的密钥。

2.使用多个身份进行SSH连接

1
2
3
4
5
6
7
# 创建多个密钥对
ssh-keygen -t rsa -f ~/.ssh/id_rsa_work -C "work_key"
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_personal -C "personal_key"

# 使用多个身份进行SSH连接
ssh -i ~/.ssh/id_rsa_work user@work_server
ssh -i ~/.ssh/id_ed25519_personal user@personal_server

上面的示例展示了如何创建多个密钥对,并在进行SSH连接时使用不同的身份。这种方式可以方便地管理不同用途的密钥,并增强安全性。

通过上面的示例,我们可以看到ssh-keygen命令在SSH密钥管理中扮演着重要的角色。它不仅可以创建各种类型和长度的密钥对,还提供了多种选项来自定义密钥的属性和存储位置。同时,我们还可以结合其他命令和脚本,实现密钥验证、多身份管理等高级用法,从而提高SSH连接的安全性和便利性。