0x00 SSH认证

这个还是一个小伙伴半夜来问我,你知道华为怎么用RSA密钥进行登陆吗?

有点傻眼,这么久了,还是第一次有人问我这个问题,真是没注意过,很久之前学习linux时确实知道是可以使用客户端公钥进行登陆的,但是从来都没有想过原来路由器也可以这样搞。。。

由于当时有事,就没有去测试,不过小伙伴也很厉害,通过把原本的server当作客户端去ssh到原本的client时,会保存下来密钥,反手就把这个密钥分配给真正的客户端,从而实现了公钥登陆服务器。。。

先说下常见SSH认证的两种方式,即使用用户名密码或者使用公钥认证。


0x01 使用用户名/密码对的方式


工作流程:

1.向服务器进行发起连接2.服务器回复它的公钥3.双向协商安全参数并建立连接4.用户登入服务器

可见这种方式并不安全,因为当在上述的流程2时,如果攻击者截取了client的请求连接消息,并将自己的公钥发送给client就可以通过欺骗实现攻击了,比如中间人,钓鱼或者代理等。

生活中用的最多的ssh方式就是这一种了。下面简单贴下ssh的配置

server-AR2

user-interface vty 0 4authentication-mode aaaprotocol inbound ssh
#
stelnet server enable
#
aaa local-user test password cipher ciscolocal-user test privilege level 3
#

client-AR1

[AR1]ssh client first-time enable
[AR1]stelnet 12.1.1.2
Please input the username:test
Trying 12.1.1.2 ...
Press CTRL+K to abort
Connected to 12.1.1.2 ...
The server is not authenticated. Continue to access it? (y/n)[n]:y
Apr 25 2020 21:27:55-08:00 AR1 %%01SSH/4/CONTINUE_KEYEXCHANGE(l)[1]:The server had not been authenticated in the process of exchanging keys. When deciding whether to continue, the user chose Y.
[AR1]
Save the server's public key? (y/n)[n]:y
The server's public key will be saved with the name 12.1.1.2. Please wait...Apr 25 2020 21:27:59-08:00 AR1 %%01SSH/4/SAVE_PUBLICKEY(l)[2]:When deciding whether to save the server's public key 12.1.1.2, the user chose Y.
[AR1]
Enter password:
<AR2>quit

0x02 使用公钥认证


工作流程:

前提条件,client已经创建好的非对称密钥对,将公钥已经通过安全的方式传递到了server上。1.客户端进行ssh连接的初始化2.服务器回复随机数3.客户端使用私钥进行加密随机数,并发送给服务器4.服务器拿公钥进行解密,如果解密成功,则验证通过。

看这个流程图,感觉有点怪,但是google上的这样流程图还是不少的,于是又在百度里面搜了一圈,发现了另外一张流程图。

个人感觉,这个比较符合华为配置的逻辑,找RFC找了一圈也没发现在哪个RFC当中定义的,维基上还给出了第三种,难受了。

暂时先认为第二个是对的吧。下面贴出华为路由器使用rsa验证发式的关键配置,大部分配置和上一个实验一样,x细微改动如下:
client-AR1

[AR1]display rsa local-key-pair public =====================================================
Time of Key pair created: 2007-08-25 16:35:02-08:00
Key name: Host
Key type: RSA encryption Key
=====================================================
Key code:
30470240C974420D DD712C58 36A67819 362FEB9C 9C17E32624101B32 C272F9C9 E3CD06EB C2C73F7C BC89A0E0994995EF 7885F359 57B25237 3D441556 A050F8236087E121 0203010001//上面是默认的公钥,也可以通过命令rsa local-key-pair create 重新创建
//记住,key code下面的数字是等会要用的

server-AR2

//更改ssh的验证方式为rsa
[AR2]ssh user test authentication-type rsa Authentication type setted, and will be in effect next time//配置AR1的公钥
[AR2]rsa peer-public-key AR1-PPK
Enter "RSA public key" view, return system view with "peer-public-key end".
NOTE: The number of the bits of public key must be between 769 and 2048.
[AR2-rsa-public-key]public-key-code begin
Enter "RSA key code" view, return last view with "public-key-code end".
[AR2-rsa-key-code]3047
[AR2-rsa-key-code]  0240
[AR2-rsa-key-code]    C974420D DD712C58 36A67819 362FEB9C 9C17E326
[AR2-rsa-key-code]    24101B32 C272F9C9 E3CD06EB C2C73F7C BC89A0E0
[AR2-rsa-key-code]    994995EF 7885F359 57B25237 3D441556 A050F823
[AR2-rsa-key-code]    6087E121
[AR2-rsa-key-code]  0203
[AR2-rsa-key-code]    010001
[AR2-rsa-key-code]public-key-code end
[AR2-rsa-public-key]peer-public-key end
[AR2]//将刚刚配置的公钥分配给AR1的用户test
[AR2]ssh user test assign rsa-key AR1-PPK

client-AR1验证现象,免密登陆成功。

[AR1]stelnet 12.1.1.2
Please input the username:test
Trying 12.1.1.2 ...
Press CTRL+K to abort
Connected to 12.1.1.2 ...-----------------------------------------------------------------------------     User last login information:     -----------------------------------------------------------------------------Access Type: SSH      IP-Address : 12.1.1.1 ssh     Time       : 2020-04-25 21:28:15-08:00     -----------------------------------------------------------------------------
<AR2>

0x03 RFC4252

还是找到了,虽然没说的很详细,但是感觉第一张英文的流程图是对的。。。

To perform actual authentication, the client MAY then send a signature generated using the private key,有这么一句话,和第一张流程图还是对应上了。不过在抓包中啥都没找到,难受。。。

当然,也许在实际生活中,设计不一进按照rfc来进行设计的,也许都是对的。。。算了,不纠结了,睡觉,狗命要紧。。。

HICE-SSH使用RSA认证方式进行登陆相关推荐

  1. Linux下SSH使用rsa认证方式省去输入密码

    使用Linux主机生成的密匙 1.生成密匙 [root@www.linuxidc.com .ssh]#ssh-keygen -t rsa Generating public/private rsa k ...

  2. 禁用了ssh的密码认证方式导致无法登陆

    登录服 务器时出现"Disconnected:No supported authentication methods available(xxx)"的提示,而此时使用的是密码登陆, ...

  3. 10.30系统进程及服务控制,前后台调用,kill,进程信号,top进程动态监控,系统控制systemctl,ssh服务和认证,用户登陆审计

    #######单元6.系统进程及服务控制##### ####1.什么是进程 进程:运行的程序 ####2.查看进程 1)图形方式查看 gnome(the gun network object mode ...

  4. linux交换机登陆密码,h3c交换机配置ssh密码验证登录方式

    一.背景: 1.由于PC机串口不支持热插拔,请不要在交换机带电的情况下,将串口插入或者拔出PC机.当连接PC和交换机时,请先安装配置电缆的DB-9端到PC机,再连接RJ-45到交换机:在拆下时,先拔出 ...

  5. Java 实现 SSH 协议的客户端登录认证方式

    摘自:http://blog.sae.sina.com.cn/archives/333/comment-page-1#comment-37391 简介: 本文首先对 SSH 协议的基础知识作以介绍,然 ...

  6. Java 实现 SSH 协议的客户端登录认证方式--转载

    背景 在开篇之前,让我们先对 SSH 协议有个宏观的大致了解,这样更有利于我们对本文的加深了解.首先要提到的就是计算机网络协议,所谓计算机网络协议,简单的说就是定义了一套标准和规则,使得不同计算机之间 ...

  7. oracle登陆认证方式

    ORACLE数据库通过sqlnet.ora文件中的参数sqlnet.authentication_services,参数文件中的remote_login_passwordfile和口令文件pwdsid ...

  8. 手机版QQ登陆的认证方式有哪些?

    手机版QQ登录的认证方式包括: 使用QQ账号和密码登录 使用手机号和短信验证码登录 使用微信账号登录 使用微博账号登录 使用Facebook账号登录 使用手机Touch ID或面部识别登录.

  9. linux系统密码正则,Linux密钥登录原理和ssh使用密钥实现免密码登陆

    目录 1.公私钥简介与原理 公钥和私钥都属于非对称加密算法的一个实现,这个加密算法的信息交换过程是: 1) 持有公钥的一方(甲)在收到持有私钥的一方(乙)的请求时,甲会在自己的公钥列表中查找是否有乙的 ...

  10. 程序员过关斩将--更加优雅的Token认证方式JWT

    点击上方"蓝字"带你去看小星星 菜菜,上次你讲的cookie和session认证方式,我这次面试果然遇到了 结果怎么样? 结果面试官问我还有没有更好的方式? 看来你又挂了 别说了, ...

最新文章

  1. 一起感受不一样的项目沙盘
  2. 计算机科学软件工程专业大学排名,2020软件工程专业大学排名及录取分数汇总(2021理科生参考)...
  3. Google AdSense 帐户已被停用
  4. ASP.NET Core Web 应用程序系列(四)- ASP.NET Core 异步编程之async await
  5. H3CPPPOE拨号
  6. 【转载】Jquery中的$命名冲突的解决方案
  7. VMware利用unlocker开启MacOS支持
  8. 华为笔试题 2022.3.30
  9. python将整数转换成二进制形式的方法
  10. 安卓系统强制旋转屏幕实现横竖屏切换
  11. Mybatis使用choose when
  12. 从计算机内部提取型号和mac,Mac计算机型号这么多 我该选哪一个?
  13. ‘rimraf‘ 不是内部或外部命令,也不是可运行的程序
  14. (阿里巴巴开发手册)为什么阿里巴巴推荐内部员工使用StringBuilder?
  15. 流年如风卷起梅花飘零的记忆
  16. 年节约10亿美元 微软宣布裁员
  17. 字符表单验证与正则表单验证
  18. windows找不到文件常见问题
  19. 大包回转台液压滑环的应用
  20. 用 java实现双色球号码生成系统;(在装满33个红色球池中连续抽取6个红球; 在一个装满16颗球的蓝色球池中抽取1个蓝球。)

热门文章

  1. 人人都说风口的二次元还是门好生意吗?——动漫市场分析
  2. 【MATLAB imagesc 背景色】
  3. git的安装步骤,仅适用于windows-64位系统
  4. Redis全面实战教程
  5. UCGUI的消息处理
  6. 分段三次hermite插值python
  7. EXCEL数据处理小结(SQL)
  8. jspstudy启动mysql失败_linux系统mysql服务启动失败
  9. 360安全卫士 免杀
  10. C++实现求解完美数算法