ssh服务认证

系统信息

1[root@nfs01 ~]# uname -r 22.6.32-696.el6.x86_64 3[root@nfs01 ~]# uname -m 4x86_64 5[root@nfs01 ~]# cat /etc/redhat-release 6CentOS release 6.9 (Final)

ssh分发公钥,进行远程免密登陆过程详解

1)客户端创建密钥对

1[root@web01 .ssh]# ssh-keygen -t dsa 2Generating public/private dsa key pair. 3Enter file in which to save the key (/root/.ssh/id_dsa): 4Enter passphrase (empty for no passphrase): 5Enter same passphrase again: 6Your identification has been saved in /root/.ssh/id_dsa. 7Your public key has been saved in /root/.ssh/id_dsa.pub. 8The key fingerprint is: 9d1:86:87:7a:d4:4a:df:d0:e9:12:4c:9f:46:3e:2b:6b root@web01 10The key's randomart image is: 11+--[ DSA 1024]----+ 12| . . | 13| B = o | 14| * O O | 15| + * * o | 16| . S + + | 17| . + | 18| E | 19| . | 20| | 21+-----------------+ 22[root@web01 .ssh]# ls 23id_dsa id_dsa.pub

2)客户端分发公钥到服务端

1[root@web01 .ssh]# ssh-copy-id -i id_dsa.pub root@172.16.1.31 2The authenticity of host '172.16.1.31 (172.16.1.31)' can't be established. 3RSA key fingerprint is d8:50:de:b6:99:02:66:dd:e8:63:1a:31:1d:b2:60:dc. 4Are you sure you want to continue connecting (yes/no)? yes 5Warning: Permanently added '172.16.1.31' (RSA) to the list of known hosts. 6root@172.16.1.31's password: 7Now try logging into the machine, with "ssh 'root@172.16.1.31'", and check in: 8 9 .ssh/authorized_keys 10 11to make sure we haven't added extra keys that you weren't expecting. 12 13 14翻译: 15主机'172.16.1.31(172.16.1.31)'的真实性无法建立。 16RSA密钥指纹是d8:50:de:b6:990266:dd:e8:63:1a:31:1d:b2:60:dc。 17你确定要继续连接吗(是/否)? 18警告:将“172.16.1.31”(RSA)永久添加到已知主机列表中。 19现在尝试使用“ssh'root@172.16.1.31'”登录到计算机,然后签入: 20 .ssh/authorized_keys 21以确保我们没有添加您不期望的额外密钥。 22 23[root@web01 .ssh]# ls 24id_dsa id_dsa.pub known_hosts 25 26 27来自服务端的公钥rsa 28[root@web01 .ssh]# cat known_hosts 29172.16.1.31 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArCjSlfwBSCHM/V4jAI5rii8W5fu2/AW2oqpFbEg5IbpnI83vPhSpNZBJWBFYrZRPngTt2cTJixJbyBaa3Dg8MNLBH+rvMq5oOvRBLCwQ3wX0VDncUfTbg/GHDy+3gOX9+5YZQp7YRt9S8oKlIEZGyScnNCPJW2f9i6hvm5uIn3gQ+TLgbGnY42d06EOqfvBtf3HPBlGyWiTiDFxFegFOiL7wefdtJXMGvWC5Cm9/xU8TROxvh6SRi0vO4pPED3WJnXwPFHnRgrPfh4taoSt403+F23u9Hcy8+kYg+f/zXkbIWWt2S5P/ElTciYBmGeDzqjhK+kRrVYB/TiOuCThEHQ== 30 31 32进入服务端,查看rsa公钥,是否和上面显示的是否一致 33[root@nfs01 ~]# cd /etc/ssh/ 34[root@nfs01 ssh]# cat ssh_host_rsa_key.pub 35ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArCjSlfwBSCHM/V4jAI5rii8W5fu2/AW2oqpFbEg5IbpnI83vPhSpNZBJWBFYrZRPngTt2cTJixJbyBaa3Dg8MNLBH+rvMq5oOvRBLCwQ3wX0VDncUfTbg/GHDy+3gOX9+5YZQp7YRt9S8oKlIEZGyScnNCPJW2f9i6hvm5uIn3gQ+TLgbGnY42d06EOqfvBtf3HPBlGyWiTiDFxFegFOiL7wefdtJXMGvWC5Cm9/xU8TROxvh6SRi0vO4pPED3WJnXwPFHnRgrPfh4taoSt403+F23u9Hcy8+kYg+f/zXkbIWWt2S5P/ElTciYBmGeDzqjhK+kRrVYB/TiOuCThEHQ==

    从上面可知,客户端分发公钥到服务端时,会接收到服务端的rsa公钥,并将此公钥保存到文件/root/.ssh/known_hosts中,通过查看服务端/etc/ssh/ssh_host_rsa_key.pub文件内容,确定内容一致。

    在接收到服务端公钥之后,输入服务端密码,将客户端公钥信息发送到服务端/root/.ssh/authorized_keys文件中
    此时,服务端拥有客户端的公钥和本机的私钥,客户端拥有服务的公钥和本机的私钥

3)进行免密登陆测试

1[root@web01 .ssh]# ssh 'root@172.16.1.31' 2Last login: Mon Mar 12 11:46:28 2018 from web01 3[root@nfs01 ~]#

    免密登陆成功

第三步免密登陆连接过程讲解:

    在执行此命令(ssh 'root@172.16.1.31')时,首先是客户端发起建立连接请求,请求使用密钥进行安全认证,并发送客户端的公钥信息到服务端,服务端接收到请求之后,首先根据请求连接的root用户查找服务器端root用户家目录下事先保存的客户端的公钥,比较是否和请求连接时发送的公钥一致;如果两个密钥一致,服务器端就用客户端的公钥进行加密“质询”,并发送给客户端。

    客户端在接收到“质询”之后,使用本机的私钥进行解密,再把解密结果,通过服务端的公钥进行加密,然后发送给服务端,服务端接收到客户端发送的结果之后,服务端使用本机私钥进行解密,验证质询,如果验证通过,建立连接。

    客户端和服务端进行数据传输时,进行加密、解密的方式进行交流。

客户端拥有服务端的公钥; 服务端拥有客户端的公钥

    客户端使用服务端的公钥进行数据的加密,对接收的服务端的数据使用本机私钥解密。

    服务端使用客户端的公钥进行数据的加密,对接收的客户端的数据使用本机私钥解密。

私钥不能在网络中传输---私钥可以解密公钥

公钥可以在网络中传输---公钥不能解密私钥    

注:本博客基于自己的理解所写,读者可根据自己的思路进行理解,如果此博文有错误,请告知,谢谢!

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )