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文件,移除或更新不再有效的服务器公钥。

相关推荐
安全系统学习43 分钟前
系统安全之大模型案例分析
前端·安全·web安全·网络安全·xss
(:满天星:)1 小时前
第31篇:块设备与字符设备管理深度解析(基于OpenEuler 24.03)
linux·运维·服务器·网络·centos
小陶来咯1 小时前
【仿muduo库实现并发服务器】Acceptor模块
运维·服务器
cui_hao_nan2 小时前
Docker后端部署
运维·docker·容器
ZZH1120KQ2 小时前
Linux系统安全及应用
linux·运维·系统安全
加密狗复制模拟2 小时前
坚石ET ARM加密狗复制模拟介绍
安全·软件工程·个人开发
小扎仙森3 小时前
关于服务器宝塔转移wordperss子比主题问题
运维·服务器
小小小糖果人3 小时前
Linux云计算基础篇(5)
linux·运维·服务器
我不是哆啦A梦3 小时前
破解风电运维“百模大战”困局,机械版ChatGPT诞生?
运维·人工智能·python·算法·chatgpt
galaxylove3 小时前
Gartner发布塑造安全运营未来的关键 AI 自动化趋势
人工智能·安全·自动化