公钥登陆原理解析及相关

 

基于公钥认证

在上面介绍的登录流程中可以发现,每次登录都需要输入密码,很麻烦。SSH提供了另外一种可以免去输入密码过程的登录方式:公钥登录。流程如下:

    • 1.Client将自己的公钥存放在Server上,追加在文件authorized_keys中。
    • 2.Server端接收到Client的连接请求后,会在authorized_keys中匹配到Client的公钥pubKey,并生成随机数R,用Client的公钥对该随机数进行加密得到pubKey(R)
      ,然后将加密后信息发送给Client。
    • 3.Client端通过私钥进行解密得到随机数R,然后对随机数R和本次会话的SessionKey利用MD5生成摘要Digest1,发送给Server端。
    • 4.Server端会也会对R和SessionKey利用同样摘要算法生成Digest2。
    • 5.Server端会最后比较Digest1和Digest2是否相同,完成认证过程。

 

 

 

ssh-keygen是用于生产密钥的工具。

-t:指定生成密钥类型(rsa、dsa、ecdsa等)
-P:指定passphrase,用于确保私钥的安全
-f:指定存放密钥的文件(公钥文件默认和私钥同目录下,不同的是,存放公钥的文件名需要加上后缀.pub)
[root@mysql.quan.bbs ~]$ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
f0:43:a6:0e:6d:b7:38:c7:47:22:4a:a7:4d:0b:74:59 root@mysql.quan.bbs
The key's randomart image is:
+--[ RSA 2048]----+
|        E        |
|       o         |
|    . + o        |
|   . o *         |
|    + B S .      |
|   . @ * =       |
|    o * + .      |
|       o .       |
|                 |
+-----------------+
[root@mysql.quan.bbs ~]$cd -
/root/.ssh
[root@mysql.quan.bbs .ssh]$ll -a
total 20
drwx------  2 root root 4096 Mar  2 20:08 .
dr-xr-x---. 5 root root 4096 Mar  2 20:05 ..
-rw-------  1 root root 1671 Mar  2 20:08 id_rsa
-rw-r--r--  1 root root  401 Mar  2 20:08 id_rsa.pub
-rw-r--r--  1 root root 1215 Feb 18 09:22 known_hosts

 

 

[root@mysql.bkone.quan.bbs ~]$ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
6e:67:dd:13:a5:a4:e3:88:66:83:54:c7:0c:9f:cc:ff root@mysql.bkone.quan.bbs
The key's randomart image is:
+--[ RSA 2048]----+
|        .        |
|         B .     |
|        . O   . .|
|       . . . o o |
|      . S   + o  |
|     . o . + + . |
|      . B + o E  |
|       + +     . |
|                 |
+-----------------+
[root@mysql.bkone.quan.bbs ~]$cd /root/.ssh/
[root@mysql.bkone.quan.bbs .ssh]$ll -a
total 16
drwx------  2 root root 4096 Mar  2 20:09 .
dr-xr-x---. 5 root root 4096 Mar  2 20:09 ..
-rw-------  1 root root 1671 Mar  2 20:09 id_rsa
-rw-r--r--  1 root root  407 Mar  2 20:09 id_rsa.pub

 

1.id_rsa:保存私钥
2.id_rsa.pub:保存公钥
3.authorized_keys:保存已授权的客户端公钥
4.known_hosts:保存已认证的远程主机ID

 

 

命令解析

scp命令(文件传输)

标准语法    上传  scp -r -P 2222 install.log root@192.168.100.100:/root/

                     下载  scp -r -P 2222 root@192.168.100.100:/root/install.log /home/install.log

使用技巧  服务端口    默认为22端口,端口变更需要使用-P参数指定端口

        指定用户    明确指定需要连接的用户

        目录拷贝    目录拷贝时,需要增加-r参数,进行递归传输文件

 

 

 

ssh-keygen命令(秘钥创建)

标准语法  交互式创建      ssh-keygen

      非交互式创建  ssh-keygen -f ~/.ssh/id_rsa -P ""

参数解释  -f  指定秘钥文件的位置

                      -P     指定秘钥空密码

 

 

第四:ssh-copy-id命令(互信配置)

标准语法    ssh-copy-id "root@192.168.100.100 -p 2222"

使用技巧    指定用户    明确与哪个主机的哪个用户配置互信

          指定端口    需要使用-p参数指定端口,并且将整个连接串使用双引号进行引起

 

posted @ 2020-03-02 20:14  linux——quan  阅读(247)  评论(0编辑  收藏