提示
在使用 .ssh生成公私钥之前需安装 SSH。
流程
以生成ED25519 SSH keys为例:
1、win + r 打开 ‘运行’ 对话框,输入cmd 打开 Windows 的命令提示符(Command Prompt)应用程序。
2、直接输入ssh-keygen -t ed25519 -C "<comment>"
,得到响应:
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\User/.ssh/id_ed25519):
该响应的意思是:生成的密钥对放在那个文件下面,他给了一个默认地址 C:\Users\User/.ssh/id_ed25519,如果使用默认地址直接回车就行,如果不使用默认地址可以自行在后面添加地址列如:
Enter file in which to save the key (C:\Users\User/.ssh/id_ed25519):D:\MySecretKey\id_ed25519
3、在完成上述操作后得到响应:
Enter passphrase (empty for no passphrase):
该响应的意思是:提示你输入密码短语(passphrase)时,你可以选择输入一个密码短语来保护生成的私钥文件。如果你希望在私钥上添加密码短语,你可以输入你所需的密码短语并按回车键。如果你不想使用密码短语,直接按回车键以为空白密码短语继续。
tips:在输入时我的是不会显示出来的,但放心,之后会有一个确认密码短语的响应,再之后继续输入一下就能确定是否使用上了密码短语。如下:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
4、最后得到如下响应:
Your identification has been saved in C:\Users\User\my_secret_key\id_ed25519
Your public key has been saved in C:\Users\User\my_secret_key\id_ed25519.pub
The key fingerprint is:
SHA256:ZOYTzA5wKNF+sqg6INhiQVY2s+bXHwO6UKH5thcT5vU <comment>
The key's randomart image is:
+--[ED25519 256]--+
| oB.o. |
| oo Oo.o |
|o B ..+B. |
| .o = *B+.. |
|...+ O =So E |
|=.o = o +.o |
|+o o . . |
|o . |
|o. |
+----[SHA256]-----+
其中说明,公钥在id_ed25519.pub文件中,私钥在id_ed25519文件中。
密钥算法扩展
默认情况下,Linux 和 macOS 系统上的 SSH 密钥存储在用户的主目录中的.ssh/子目录中,下表包括每种 SSH 密钥算法的默认文件名:
算法 | 公钥 | 私钥 |
---|---|---|
ED25519(首选) | id_ed25519.pub | id_ed25519 |
RSA(至少 2048 位密钥大小) | id_rsa.pub | id_rsa |
DSA(已弃用) | id_dsa.pub | id_dsa |
ECDSA | id_ecdsa.pub | id_ecdsa.pub |
本人所知的各密钥生成命令
ED25519
Practical Cryptography With Go 一书中表明 ED25519 密钥比 RSA 密钥更为安全。
2014年 OpenSSH 6.5 引入 ED25519 SSH 密钥后,当前任何操作系统都可用使用这种密钥。
ssh-keygen -t ed25519 -C "<comment>"
-C(例如带引号注释的电子邮件地址)是标记 SSH 密钥的可选方法。
**RSA **
如果使用 RSA 密钥生成 SSH 密钥,则建议至少使用 2048 位的密钥大小. 默认情况下, ssh-keygen命令创建一个 1024 位 RSA 密钥.
可以使用以下命令创建和配置 RSA 密钥,如果需要,可以生成建议的最小密钥大小2048:
ssh-keygen -t rsa -b 2048 -C "email@example.com"
ECDSA
ssh-keygen ecdsa -C "<comment>"
小结
无论是创建ED25519还是创建RSA密钥,您都从ssh-keygen命令开始。此时,您将在命令行中看到以下消息(以 ED25519 密钥为例):
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
如果您还没有 SSH 密钥对并且也没有生成部署密钥 ,您可以按照系统提示的建议选择 SSH 密钥存储的文件和目录,SSH 客户端将使用默认配置来生成您的 SSH 密钥。
当然,您也可以将新生成的 SSH 密钥保存在其他位置。您可以选择要分配的目录和文件名,您还可以为专用的特定主机 生成SSH 密钥。
在选择 SSH 密钥的保存路径后,您可以为 SSH 密钥设置密码 :
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
如果成功,您将看到有关ssh-keygen命令将标识和私钥保存在何处的确认信息。
如有需要,您也可以使用以下命令更新密码:
ssh-keygen -p -f /path/to/ssh_key
OpenSSH 6.5 ~ 7.8 的 RSA 密钥
在 OpenSSH 7.8 之前,RSA 密钥的默认公共密钥指纹基于 MD5,因此并不安全。
如果您的 OpenSSH 版本介于 6.5 至 7.8(含)之间,请使用-o选项运行ssh-keygen ,以更安全的 OpenSSH 格式保存您的 SSH 私钥。
如果您已经具有可用于 GitCode 的 RSA SSH 密钥,请考虑对其进行升级以使用更安全的密码加密格式。 您可以使用以下命令进行操作:
ssh-keygen -o -f ~/.ssh/id_rsa
或者,您可以使用以下命令以更安全的加密格式生成新的 RSA 密钥:
ssh-keygen -o -t rsa -b 4096 -C "email@example.com"
注意: ED25519 已将密钥加密为更安全的 OpenSSH 格式。
遇到的问题
此处用于统计遇到的问题,并在解决后给出解决方案