实战证明LINUX系统下密钥对验证的安全性

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

实战证明LINUX系统下密钥对验证的安全性 


  密钥对验证:要求提供匹配的密钥信息才能通过验证,首先在客户端创建一对密钥文件(公钥、私钥),后把公钥文件放到需要远程连接的服务器中。远程登录时,系统将使用私钥加密身份信息提交给远程主机,远程主机使用对方提交的公钥来解密进行身份验证。


本次实验通过三部分来完成:

                        1、构建密钥对

                        2、验证私钥的可靠性

                        3、验证公钥的可靠性


一、构建密钥对验证SSH体系:

 

(1)首先在PC1上创建密钥对(私钥文件:id_rsa   公钥文件:id_rsa.pub)

(2)将公钥文件上传至需要远程连接的服务器

(3)使用密钥对验证


 1、创建密钥对:ssh-keygen -t rsa 在创建的过程中不设置短语(就是用来加密私钥的密码,因为如果脚本中需要远程登录到另一台服务器时,如果有短语会等待管理员输入短语,导致脚本执行暂停)。


 wKiom1lsc3eyztt3AAA_FMaxz_I215.png


2、拷贝公钥到另一台linux主机(PC2):ssh-copy-id root@192.168.80.100

 查看 .ssh目录下是否成功创建密钥对,然后把公钥拷贝到对方主机


[root@xs ~]# ls .ssh

id_rsa  id_rsa.pub


 wKiom1lsc6nxBgILAABVf5a9bcQ051.png

 wKiom1lsc7bhCB3KAABVf5a9bcQ295.png


3、远程登陆: ssh root@192.168.80.100


 wKiom1lsc_HT7LK9AAAvmjEv130942.png


通过上面截图可以看到登陆192.168.80.100并不需要输入密码验证就可以直接连接。因为PC1使用刚才产生的私钥加密了数据,对方收到后使用公钥解密可以解开,身份验证成功。思考一个问题:如果此时PC2远程连接PC1,是需要输入密码还是不需要直接连接成功呢?


二、验证私钥丢失后的安全性

如果私钥丢失,那么得到私钥的用户能否远程连接到 PC2(私钥在产生的时候并没有设置短语加密)


1、把私钥拷贝到另外一台 linux主机(PC3)root中,再把私钥从PC3root中拷贝到普通用户(yus)的目录中,验证root和yus能否远程连接PC2

(1)、cd到 .ssh目录并把id_rsa(私钥)拷贝到PC3中 

  wKioL1lsdAfgAcVuAAA-WlDbwnc077.png


(2)、在PC3上查看是否拷贝成功,并把id_rsa文件复制到.ssh目录中(如果没有.ssh目录要用mkdir新建一个.ssh目录)

 

 wKiom1lsdBryISGUAAAcBxEovgI131.png


(3)连接PC2:ssh root@192.168.80.100


 wKioL1lsdE_iMXKtAAA4bmRXH3Q453.png

通过截图可以看到已经成功连接到PC2并且不需要密码验证

验证普通用户能否远程连接

1、赋予yus对id_rsa文件的可执行权限

 wKioL1lsdGiAMG3EAAA94KiU11c502.png


2、并把id_rsa文件复制到yus用户中的.ssh目录下

[root@ys .ssh]# cp  -p  id_rsa  /home/yus/   

[root@ys .ssh]# su - yus

[yus@ys ~]$ mkdir  /home/yus/.ssh


3、登陆到PC2:ssh root@192.168.80.100  


wKioL1lsdNfBwyKlAAA3_6iA5vA581.png

由以上结论可以得出私钥丢失后,任何得到私钥的都可以登陆到PC2服务器。


三、验证公钥丢失后的可靠性

1、把PC2上的公钥拷贝到PC3上

 

 wKiom1lsdO_QD1aDAAA1H49_-vw020.png


2、在PC3上把公钥文件复制到.ssh目录中,记得把之前的私钥文件删除


 wKioL1lsdP7RAfG4AAAegPZchKk289.png


3、使用PC1验证能否远程登陆PC3

 

wKiom1lsdQuzr3B0AAAt-AsqJ5s832.png

 

  通过上面截图可得出结果,公钥丢失后或被窃取后,产生密钥对的服务器就可远程登陆到有公钥的设备上。也就是说哪台设备上有公钥,服务器就能远程连接,而且公钥不论是从服务器上获得的还是从别的设备上窃取的都可使用。所有无论是公钥还是私钥都需要妥善保管。


  总结:SSH远程管理通过密钥对验证是通过公钥和私钥互相加密解密完成验证的。通过本次实验可以看出,公钥和私钥都不可丢失,否则就会造成安全问题。同时相对于密码验证来说,密钥对验证要依然要安全许多。在合适的场景下合作恰当的验证方式就好。绝对的安全是不存在的。 



本文转自Y.weisheng 51CTO博客,原文链接:http://blog.51cto.com/yuan2/1948260,如需转载请自行联系原作者

相关文章
Linux系统资源管理:多角度查看内存使用情况。
要知道,透过内存管理的窗口,我们可以洞察到Linux系统运行的真实身姿,如同解剖学家透过微观镜,洞察生命的奥秘。记住,不要惧怕那些高深的命令和参数,他们只是你掌握系统"魔法棒"的钥匙,熟练掌握后,你就可以骄傲地说:Linux,我来了!
67 27
Linux 手动安装快速部署 LNMP 环境实战
本文详细记录了在阿里云ECS上手动搭建LNMP环境的过程,系统选用Ubuntu 24.04。主要内容包括:1) 使用`apt`安装Nginx和MySQL,并更新软件源;2) 编译安装PHP 8.4.5,配置PHP-FPM及环境路径;3) 配置MySQL root用户密码;4) 调整Nginx支持PHP解析并测试整体环境。通过此过程,重现手动配置服务器的细节,帮助熟悉各组件的安装与协同工作。
|
8天前
|
Linux系统ext4磁盘扩容实践指南
这个过程就像是给你的房子建一个新的储物间。你需要先找到空地(创建新的分区),然后建造储物间(格式化为ext4文件系统),最后将储物间添加到你的房子中(将新的分区添加到文件系统中)。完成这些步骤后,你就有了一个更大的储物空间。
57 10
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
95 19
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
25000多字详细讲解,深度剖析权限管理核心。从基础权限到复杂的特殊权限,逐一拆解,无论你是零基础小白还是经验丰富的运维人员,都能在这里找到提升技能的关键知识,全面掌握 Linux 权限管理。还不快来看看?
|
20天前
|
Linux系统中如何查看CPU信息
本文介绍了查看CPU核心信息的方法,包括使用`lscpu`命令和读取`/proc/cpuinfo`文件。`lscpu`能快速提供逻辑CPU数量、物理核心数、插槽数等基本信息;而`/proc/cpuinfo`则包含更详细的配置数据,如核心ID和处理器编号。此外,还介绍了如何通过`lscpu`和`dmidecode`命令获取CPU型号、制造商及序列号,并解释了CPU频率与缓存大小的相关信息。最后,详细解析了`lscpu`命令输出的各项参数含义,帮助用户更好地理解CPU的具体配置。
59 8
深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。
|
10天前
|
微服务2——MongoDB单机部署4——Linux系统中的安装启动和连接
本节主要介绍了在Linux系统中安装、启动和连接MongoDB的详细步骤。首先从官网下载MongoDB压缩包并解压至指定目录,接着创建数据和日志存储目录,并配置`mongod.conf`文件以设定日志路径、数据存储路径及绑定IP等参数。之后通过配置文件启动MongoDB服务,并使用`mongo`命令或Compass工具进行连接测试。此外,还提供了防火墙配置建议以及服务停止的两种方法:快速关闭(直接杀死进程)和标准关闭(通过客户端命令安全关闭)。最后补充了数据损坏时的修复操作,确保数据库的稳定运行。
41 0
带你读《Linux实战》之一:欢迎使用Linux
你正在期望学习管理Linux计算机吗?这是一个很好的选择。虽然Linux常常驻留于消费者的桌面计算机上,但它同时也是服务器领域的绝对主宰,特别是虚拟服务器和云服务器。如果你打算管理当前引人关注的服务器和网络体系架构,你将不得不围绕Linux的命令行展开学习。除了第1章之外,本书的每一章都包括一个或两个实际项目。鉴于第1章的内容主要用来填补你的Linux知识体系中可能存在的基础知识空白,因此其组织形式与其他章节有所不同。
|
2天前
|
linux命令详细说明以及案例
本文介绍了常用的 Linux 命令及其详细说明和示例,包括:`ls`(列出目录内容)、`cd`(更改目录)、`rm` 和 `mv`(删除与移动文件)、`grep`(搜索文本)、`cat`(显示文件内容)以及 `chmod`(更改文件权限)。每个命令均配有功能描述、选项说明及实际案例,帮助用户更好地掌握 Linux 命令的使用方法。
82 56