ssh-keygen简介
ssh-keygen 是一个用于生成 SSH 密钥对的命令行工具。它是在 OpenSSH 工具包中提供的,用于创建用于 SSH 连接的公钥和私钥。
以下是 ssh-keygen 命令的基本语法:
一些常用的选项和参数包括:
- -t:指定密钥类型,例如 rsa 或 dsa。
- -b:指定密钥的位数,例如 2048 或 4096。
- -f:指定密钥文件的路径和名称。
- -C:添加注释到密钥文件。
- -N:为私钥设置密码保护。
默认情况下,ssh-keygen 会生成一个名为 id_rsa 的私钥文件和一个名为 id_rsa.pub 的公钥文件。私钥文件是用于进行 SSH 连接的私钥,而公钥文件可以公开分享给其他人,用于验证你的身份。
以下是生成 SSH 密钥对的简单示例:
ssh-keygen -t rsa -b 4096
上述命令将生成一个类型为 RSA、位数为 4096 位的新密钥对,并将私钥文件保存到默认路径(~/.ssh/id_rsa)中,公钥文件保存到默认路径(~/.ssh/id_rsa.pub)中。
请注意,生成的私钥文件应保持安全,不要将其共享或发送给其他人。公钥文件可以公开分享给需要与你建立 SSH 连接的人。
其它用法:
生成一个默认类型的RSA密钥对,并保存在默认路径:
ssh-keygen
生成一个指定长度的RSA密钥对,并保存在指定路径:
ssh-keygen -t rsa -b 4096 -f /root/.ssh/id_rsa
生成一个DSA密钥对,并添加注释:
ssh-keygen -t dsa -C "my_dsa_key"
从已有的私钥文件读取密钥信息,并显示公钥:
ssh-keygen -e -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
显示公钥文件的指纹信息:
ssh-keygen -l -f ~/.ssh/id_rsa.pub
以上就是ssh-keygen命令的详细说明和示例用法,具体参数可以根据实际需求进行调整。
常用的秘钥类型
ssh-keygen 命令支持多种密钥类型,包括但不限于以下几种:
- RSA:使用 RSA 算法生成的密钥对。这是最早在 SSH 中使用的算法之一。
- DSA:使用 DSA 算法生成的密钥对。由于安全性的原因,DSA 现在已经不太常用。
- ECDSA:使用 ECDSA 算法生成的密钥对。该算法使用椭圆曲线密码学,适合用于较小的密钥长度和较高的安全性需求。
- ED25519:使用 ED25519 算法生成的密钥对。这是一种基于 Schnorr 签名方案的密钥类型,具有快速加解密和较高的安全性。
要使用不同的密钥类型,可以在运行 ssh-keygen 命令时使用 -t 选项指定所需的类型。例如,要生成一个 ED25519 密钥对,可以运行以下命令:
ssh-keygen -t ed25519
这将生成一个名为 id_ed25519 的私钥文件和一个名为 id_ed25519.pub 的公钥文件。
示例
这里演示SSH 公钥(gitee)设置
Gitee 提供了基于 SSH 协议的 Git 服务,在使用 SSH 协议访问仓库仓库之前,需要先配置好账户 SSH 公钥。
生成 SSH 公钥
Windows 用户建议使用 Windows PowerShell 或者 Git Bash,在 命令提示符 下无 cat 和 ls 命令。
1、通过命令 ssh-keygen 生成 SSH Key:
ssh-keygen -t ed25519 -C "Gitee SSH Key"
- -t key 类型
- -C 注释
输出,如:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/git/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/git/.ssh/id_ed25519
Your public key has been saved in /home/git/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:ohDd0OK5WG2dx4gST/j35HjvlJlGHvihyY+Msl6IC8I Gitee SSH Key
The key's randomart image is:
+--[ED25519 256]--+
| .o |
| .+oo |
| ...O.o + |
| .= * = +. |
| .o +..S*. + |
|. ...o o..+* * |
|.E. o . ..+.O |
| . . ... o =. |
| ..oo. o.o |
+----[SHA256]-----+
- 中间通过三次回车键确定
2、查看生成的 SSH 公钥和私钥:
ls ~/.ssh/
输出:
id_ed25519 id_ed25519.pub
- 私钥文件 id_ed25519
- 公钥文件 id_ed25519.pub
3、读取公钥文件 ~/.ssh/id_ed25519.pub:
cat ~/.ssh/id_ed25519.pub
输出,如:
ssh-ed25519 AAAA***5B Gitee SSH Key
复制终端输出的公钥。
设置账户 SSH 公钥?
用户可以通过主页右上角 「个人设置」->「安全设置」->「SSH 公钥」->「添加公钥」 ,添加生成的 public key 添加到当前账户中。
需要注意: 添加公钥需要验证用户密码
通过 ssh -T 测试,输出 SSH Key 绑定的用户名:
$ ssh -T git@gitee.com
Hi USERNAME! You've successfully authenticated, but GITEE.COM does not provide shell access.