快捷搜索:

在Linux CLI使用ssh-keygen生成RSA密钥<BR>基本框架<B

RSA 是一种公钥加密算法,在 1977 年由麻省理工学院的 Ron Rivest, Adi Shamir, Leonard Adleman 三人一路提出,是以该算法命名以三人姓氏首字母组合而成。

SSH 是 Secure Shell 缩写,是建立在利用层和传输层根基上的安然协议,为谋略机上运行的 Shell 供给安然的传输和应用情况。

传统的 rsh, FTP, POP 和 Telnet 收集协议由于传输时采纳明文,很轻易受到中心人要领进击。为了防止远程传输信息呈现泄露,SSH 协议支持对传输的数据进行加密,是以它还能防止 DNS 和 IP 诈骗。别的采取 SSH 协议传输的数据可以进行压缩,以是可以加快数据传输速率。最初 SSH 协议由芬兰的 Tatu Ylönen 在 1995 年设计开拓,今朝属于 SSH Communications Security 拥有,因为版权缘故原由,1999 年 10 月开源软件 OpenSSH 被开拓出来,它已成为事实上的 SSH 协议标准实现(SSH Communications Security 供给的 SSH 软件应用不合于 OpenSSH 的私钥款式),也是今朝 Linux 标准设置设置设备摆设摆设。

基础框架

SSH 协议主要分成三个协议:

1. 传输层协议(The Transport Layer Protocol):传输层协议供给办事器认证,数据机密性,信息完备性等支持。

2. 用户认证协议(The User Authentication Protocol):用户认证协议为办事器供给客户真个身份鉴别。

3. 连接协议(The Connection Protocol):连接协议将加密的信息地道划分成多少逻辑通道,供给给更高层利用协议应用。

验证要领

SSH 供给两种安然验证要领:

1. 基于口令:客户端应用账号和口令登录办事器,所有传输数据都邑被加密。但可能存在捏造办事器假冒真正的办事器与客户端进行交互,不能避免中心人进击。

2. 基于密钥:应用一对密钥(私钥 + 公钥),将公钥放置到办事器注册。当用户从客户端登录办事器时,办事器会接到应用密钥(即注册在办事器的公钥)进行安然验证哀求,办事器首先比对从客户端发送过来的公钥与在己方注册的公钥是否同等,假犹如等,办事器会应用该公钥加密数据向客户端提议 "寻衅"[1],从而避免中心人进击。

OpenSSH 供给的对象

OpenSSH 供给了以下几个对象:

1. ssh:实现 SSH 协议,用以建立安然连接,它替代了较早的 rlogin 和 Telnet。

2. scp, sftp:使用 SSH 协议远程传输文件,它替代了较早的 rcp。

3. sshd:SSH 办事器守护进程,运行在办事器端。

4. ssh-keygen:用以天生 RSA 或 DSA 密钥对。

5. ssh-agent, ssh-add:治理密钥的对象。

6. ssh-keyscan:扫描收集中的主机,记录找到的公钥。

天生密钥对

应用 ssh-keygen 天生一个密钥对(私钥 + 公钥):

$ ssh-keygen

Generating public/private rsa key pair.Enter file in which to save the key (/home/xavier/.ssh/id_rsa): id_rsa

Enter passphrase (empty for no passphrase):Enter same passphrase again:

Your identification has been saved in id_rsa.Your public key has been saved in id_rsa.pub.

The key fingerprint is:ce:89:59:3d:a1:3a:99:b3:01:46:78:0f:d1:cc:d4:fa xavier@Qbee-X

The key's randomart image is:+--[ RSA 2048]----+

|.=..||. .+ .|

|. +..||o o.o .|

|o ..S o||. . XE. .|

|X +||=|

|.|+-----------------+

ssh-keygen 默认应用 RSA 算法,长度为 2048 位,天生一个私钥文件 id_rsa 和一个公钥文件 id_rsa.pub,两个文件默认保存在用户的 ~/.ssh 目录下。你可以在敕令行交互历程指定密钥文件路径,也可以设置密钥口令,假如设置了密钥口令,在应用密钥进行登录时,必要输进口令。

ssh-keygen 支持 -f 选项指定密钥文件路径,-t 选项指定加密算法,-b 选项指定密钥长度,-N 选项指定密钥口令,-C 选项指定注释。

只要将公钥文件 id_rsa.pub 提交给办事器,读取该文件包孕的字符串并追加到办事器端用户的主目录 ~/.ssh/authorized_keys 文件中,持有私钥的客户端就可以应用 SSH 协议登录办事器了。

SSH 1 协议支持 RSA 算法,SSH 2 协议支持 RSA 和 DSA 两种算法。ssh-keygen 应用 -t 选项来指明加密算法,rsa1 表示支持 SSH 1,dsa, ecdsa, rsa 表示支持 SSH 2。

天生支持 SSH 1 的 RSA 密钥:

$ ssh-keygen -t rsa1 -f id-rsa1

Generating public/private rsa1 key pair.Enter passphrase (empty for no passphrase):

Enter same passphrase again:Your identification has been saved in id-rsa1.

Your public key has been saved in id-rsa1.pub.The key fingerprint is:

c8:81:8f:dc:cd:ba:86:d2:56:e8:d5:13:3f:57:a5:f9 xavier@Qbee-XThe key's randomart image is:

+--[RSA1 2048]----+||

|..||. .+ |

|. = =.+||o.=.So. . |

|. o.o o .E||o +.. o|

|. = ..||o ..|

+-----------------+

从私钥文件天生公钥文件:

公钥指纹

因为公钥长度一样平常都是 1024 或 2048 个字节,未方便进行比对,是以平日应用一个较短的字符串来代表它,这个便是公钥指纹。公钥指纹的谋略措施一样平常便是对公钥字符串进行 MD5 或者 SHA-1 等择要谋略获得,一个 1024 字节长度的 RSA 算法公钥,颠末指纹谋略后获得的公钥指纹只有 128(MD5择要)字节或者 160(SHA-1)字节。

你可以应用 ssh-keygen 对象来谋略公钥指纹:

$ ssh-keygen -l -f id_rsa.pub

2048 ce:89:59:3d:a1:3a:99:b3:01:46:78:0f:d1:cc:d4:faxavier@Qbee-X (RSA)

您可能还会对下面的文章感兴趣: