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

相关推荐
Lalolander7 小时前
WorkBuddy App 可以连接电脑吗?远程操控桌面端怎么用?
运维·电脑·腾讯云ai代码助手·workbuddy
小HANN7 小时前
保姆级实战:CentOS7 搭建 LAMP 环境部署 WordPress 个人博客
linux·运维·服务器·经验分享
前端 贾公子8 小时前
Linux云服务器安装与PostgreSQL安装
运维·服务器
严谨的麻辣烫8 小时前
批量静态 IP 如何管理?用 Python 建立一个简单的 IP 资源监控方案
运维·服务器·网络·python·tcp/ip
黎阳之光8 小时前
软硬协同国产化 | 黎阳之光矩阵式视频融合管理系统完成摩尔线程国产GPU兼容适配
大数据·人工智能·物联网·安全·数字孪生
BugShare8 小时前
告别来回切换,Navop:一站式整合数据库、SSH、终端与 AI 的开发运维工作台
运维·数据库·ssh
Amir_zy8 小时前
AI 测试实战:从功能到安全,三层质量验证体系详解
人工智能·安全
奈斯先生Vector8 小时前
从“能调用”到“可替换”:Coze 多模型 API 编排层设计指南
linux·运维·人工智能·ubuntu·平面·ios
凤山老林8 小时前
高可靠 API 网关架构:Spring Cloud Gateway 集成 Sentinel 实现智能限流、动态路由与安全管控
安全·spring cloud·架构·sentinel
技术不支持8 小时前
wsl 离线安装 Debian 11, Debian 12等指定版本
运维·debian