当前位置: 首页 > article >正文

ssh为什么是安全的?ssh怎么预防中间人攻击?

SSH之所以能够保证安全,原因在于它采用了公钥加密。 整个过程是这样的:
(1)远程主机收到用户的登录请求,把自己的公钥发给用户。
(2)用户使用这个公钥,将登录密码加密后,发送回来。
(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。 这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。 可以设想,如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了。这种风险就是著名的"中间人攻击"(Man-in-the-middle attack)。

SSH怎么预防中间人攻击
SSH中预防中间人攻击的关键是验证SSH连接的指纹或公钥。指纹是服务器的公钥的哈希值,可以被客户端用来验证它正在与真正的服务器通信。

以下是如何设置和使用SSH指纹的步骤:

首次连接到服务器时,系统会提示你接受服务器的公钥。这时,你应该查看公钥的指纹信息,并与服务器发送的指纹进行比对。
将服务器的指纹信息添加到~/.ssh/known_hosts文件中。
在以后的连接尝试中,SSH客户端将会自动检查known_hosts文件中的指纹,如果与服务器发来的指纹不匹配,连接将会被拒绝,从而防止中间人攻击。

如果你使用的是SSH命令行工具,可以使用以下命令来生成和验证指纹:

ssh-keygen -l -f [公钥文件路径]
上述命令会生成公钥的指纹信息。然后,你可以将这个指纹信息添加到~/.ssh/known_hosts文件中,格式通常是这样的:

[主机名] [公钥指纹] [公钥类型] [公钥]
请注意,定期检查known_hosts文件,移除或更新不再有效的服务器公钥。


http://www.kler.cn/a/350453.html

相关文章:

  • 疑难Tips:解决 SQL*Plus 中工具插入中文数据到Oracle数据库报错及乱码问题
  • Kivy App开发之UX控件TabbedPanel选项面板
  • C# LINQ(Language Integrated Query)详解
  • 4.JoranConfigurator解析logbak.xml
  • 微软宣布Win11 24H2进入新阶段!设备将自动下载更新
  • lvm快照备份
  • 【C语言】数据输出格式控制
  • 2.4 STM32启动过程
  • 操作系统(2) (进程调度/进程调度器类型/三种进程调度/调度算法)
  • Qt-系统线程安全(63)
  • 【系统架构设计师】案例专题二:系统开发基础考点梳理
  • Python 如何使用 Bert 进行中文情感分析
  • Linux网络命令:用于管理和显示网络路由表的工具route详解
  • KAN论文
  • PCL滤波器之面试总结
  • linux----cd和pwd命令
  • 基于yolov5的手机屏幕缺陷检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】
  • 前端vue-获取验证码和重新获取验证码倒计时
  • 【数据结构】栈和队列 + 经典算法题
  • C语言 编程练习:解决五个有趣的问题
  • Lumerical学习——分析工具(Analysis tools)
  • 0047__【python打包分发工具】setuptools详解
  • Gin框架操作指南10:服务器与高级功能
  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——6.vector(无习题)
  • React native之全局变量存储AsyncStorage
  • linux 环境运行 jenkins.war包,有可能会出现字体问题,jdk版本:11 jenkins 版本:2.420