«

如何使用ssh-keygen新建用于Github或Gitee的ssh密钥?

星辰子 发布于 阅读:163 编程知识


什么是 ssh-keygen?

ssh-keygen是一个用于生成SSH验证密钥对的工具。密钥对可用于自动登录,手动登录以及主机验证。

SSH密钥和公钥验证

SSH 协议使用公钥加密技术对主机和用户进行身份验证。 认证密钥(称为 SSH 密钥)由keygen程序创建。

SSH消除了中间人窃取用户密码的可能性。

然而,SSH 密钥就像密码一样是身份验证凭据。因此,它们必须使用类似于用户名和密码的方式处理。必须有正确的终止过程以便于不再需要它们时移除这些密钥。

创建用于用户身份验证的SSH密钥对

最简单的生成密钥对的方式是运行没有参数的 ssh-keygen 。在这种情况下,它会提示用户输入密钥的存储位置。以下是来自ssh-keygen手册的示例:

klar (11:39) ~>ssh-keygen Generating public/private rsa key pair. 
Enter file in which to save the key (/home/ylo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):  Enter same passphrase again:
Your identification has been saved in /home/ylo/.ssh/id_rsa.
Your public key has been saved in /home/ylo/.ssh/id_rsa.pub.
The key fingerprint is: SHA256:Up6KjbnEV4Hgfo75YM393QdQsK3Z0aTNBz0DoirrW+c ylo@klar
The key's randomart image is:
+---[RSA 2048]----+ |    .      ..oo..| |   . . .  . .o.X.| |    . . o.  ..+ B| 
|   .   o.o  .+ ..| |    ..o.S   o..  | |   . %o=      .  | |    @.B...     . |
|   o.=. o. . .  .| |    .oo  E. . .. | +----[SHA256]-----+ klar (11:40) ~>

起初,工具询问文件的存储位置。用于用户身份验证的.SSH密钥通常存储在位于用户主文件夹下的.ssh文件夹。在Windows系统中,它位于 C:\Users\Administrator\.ssh 。然而,在企业环境中,存储位置并不一定一致。默认的密钥文件名受算法的影响。此例中使用默认的RSA算法,名称是id_rsa。它也可为id_dsaid_ecdsa

然后,它会要求输入密码。密码用于加密密钥。即使别人获得了私钥文件,也无法使用。输入的密码应该是一个强密码。可以使用在线随机密码生成器生成密码。

选择算法和密钥大小

SSH支持用于身份验证密钥的几种公钥算法。包括:

算法使用 -t 选项选择,密钥大小使用 -b 选项。命令的用法如下:

ssh-keygen -t rsa -b 4096
ssh-keygen -t dsa
ssh-keygen -t ecdsa -b 521
ssh-keygen -t ed25519

命名文件

通常,工具会提示用户输入密钥的存储位置。然而,也可以在命令行使用 -f <filename> 选择文件。

未输入文件路径时,在Windows11版本中默认存储到C:\Users\Administrator。

ssh-keygen -f ~/tatu-key-ecdsa -t ecdsa -b 521

向SSH Agent添加密钥

ssh-agent是一个可以存储用户的私钥,这样只需要提供一次私钥的密码。登录服务器时还可以转发与agent的连接,从而允许服务器上的 SSH 命令使用在用户桌面上运行的agent。

本文涉及的命令和选项的注释

-b "Bits" 这一选项用于设置密钥的位数。管理 SSH 用例的法规可能要求使用特定的密钥长度。通常,对于RSA密钥来说2048位大小足够大。

-t "Type" 这个选项用于选择将要创建的密钥类型。建议的值如下:- rsa 用于RSA密钥 - dsa 用于DSA密钥 - ecdsa 用于elliptic curve DSA密钥。

-f "File" 密钥文件的存储位置。

其他可能用到的选项:

-p "Change the passphrase" 这一选项允许改变私钥文件的密码,与[-P old_passphrase] 和 [-N new_passphrase], [-f keyfile]一起使用。

-c "Comment" 改变私钥文件的注释。

-y 读取OpenSSH格式的私钥文件,然后使用stdout输出OpenSSH公钥。

这一节仅列出了本文涉及到的选项以及有可能用到的选项。对于完整的内容,包括更奇特或有特殊用途的选项,使用 man ssh-keygen 指令。

示意图

Gitee Github OpenSSH ssh-keygen


扫描二维码,在手机上阅读
取消
微信二维码
微信二维码
支付宝二维码