SSH协议怎么样?为什么正常的连接突然报错Identification问题

SSH

  • SSH 主要就是一种连接协议,为什么我们需要SSH呢?,传统的协议传输的内容一旦被截获就会完全暴露,内容将会被暴露出去。SSH协议通过对网络数据进行加密和验证,建立SSH客户端和SSH服务器之间的安全隧道,在不安全的网络环境中为网络服务提供了安全的传输通道。

兼具操作简单和传输效率高的优点,但它们都存在相同的问题,即明文传输数据带来的安全隐患。SSH采用加密传输数据、提升认证强度等手段,克服了Telnet和FTP应用中的安全性问题,实现了安全的远程登录和文件传输业务。

  • 但是我在使用SSH的过程中居然会出现Remote Host Identification Has Changed error and solution 。 既然有了问题就得解决,接下来我们看看问题是如何解决的。

场景

  • 本来通过ssh 连接的服务突然连接不上了,这可打的我措手不及。
  • 这台服务是我的虚拟机,之前连接都是没有问题的,而且也确认了用户名是合法的,还没让我输入密码所以不存在密码错误的情况。

问题定位

  • 通过问题报错语句[Remote Host Identification Has Changed error and solution] 。 其中 identification 表示认证的意思,翻译过来就是认证失败了。好端端的怎么会认证失败呢?

  • 随后就是自我反省的日子了。反思好久还好朋友给我提醒会不会和你重装系统有关系呢?结合这个问题场景感觉有点关系,之前因为系统版本升级所以就做了一个重装系统的操作。现在想来虽然IP还是那个IP,但是服务已然不是之前的服务了。

  • 经过翻阅资料发现问题不是重装系统导致的,确切的说并不是重装系统直接导致的,而是因为我们重装了 OpenSSH 导致服务认证失败了。

ssh存储

  • 在解决这个问题之前我们先开个小灶, 你知道 ssh 连接的信息存储在哪里吗?你是否注意到当第一次连接某个服务的时候需要你输入yes or no 的确认
  • 第一次连接需要我们确认是否继续连接,输入 yes 后服务器的连接信息就会追加到 known hosts 中,对应的位置是 ~/.ssh/known_host
  • 打开文件看一看就能发现,是每个服务的一种签名存储,所以当我们重新安装了OpenSSH 后这里的签名就失效了。

回到正题

  • 知道了ssh 存储签名位置过期导致的连接不上了,那么就好解决了我们直接删除 192.168.0.253 对应的签名就可以了。但是问题还是有点小麻烦,上面我们也看到了同一个IP 好像存在好多个签名。这该删除哪一个呢?理论上全部就可以了。还有个问题就是需要我们定位删除也很麻烦。好在linux OpenSSH 给我们提供了命令。
shell 复制代码
ssh-keygen -R {ssh.server.ip.address} -f file
  • 执行 ssh-keygen 之后就会打印发现的和指定服务相关的配置了。然后就会进行更新,我们再次连接就会让我们在执行一次确认了,后面就可以正常操作了。

总结

  • linux 一切皆文件的思想简直太方便了。包括我们git 通过ssh连接也是同样的道理。
相关推荐
fengfuyao98518 分钟前
使用ubuntu串口数据收和发不一致问题
linux·数据库·ubuntu
考虑考虑23 分钟前
@MockitoBean注解使用
spring boot·后端·spring
豌豆花下猫33 分钟前
Python 潮流周刊#106:PEP-734 正式接纳,多解释器时代来临(摘要)
后端·python·ai
night boss1 小时前
内存泄漏排查
linux·内存泄漏
掘金-我是哪吒1 小时前
分布式微服务系统架构第147集:JavaPlus技术文档平台日更
分布式·微服务·云原生·架构·系统架构
白总Server2 小时前
Golang实现分布式Masscan任务调度系统
java·运维·服务器·开发语言·分布式·后端·golang
CURRY30_HJH2 小时前
将包含父子关系的扁平列表 List<Demo> 转换成树形结构的 List<DemoVO>,每个节点包含自己的子节点列表
linux·服务器·windows
GLAB-Mary2 小时前
红帽认证工程师(RHCE):掌握Linux自动化的关键
linux·运维·自动化·rhce
lb29172 小时前
关于golang热加载安装,实时响应
开发语言·后端·golang·热加载
芯语新源2 小时前
在 Linux 系统中通过 yum 安装 Sublime Text
linux·bash·sublime text