AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 6233
Accepted
setatakahashi
setatakahashi
Asked: 2009-05-09 03:34:43 +0800 CST2009-05-09 03:34:43 +0800 CST 2009-05-09 03:34:43 +0800 CST

如何在 SSH 中删除严格的 RSA 密钥检查,这里有什么问题?

  • 772

我有一台 Linux 服务器,每当我连接它时,它都会向我显示更改 SSH 主机密钥的消息:

$ ssh root@host1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@警告:远程主机标识已更改!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ 可能有人在做一些讨厌的事情!有人现在可能正在窃听您(中间​​人攻击)!也有可能 RSA 主机密钥刚刚更改。远程主机发送的 RSA 密钥的指纹为 93:a2:1b:1c:5f:3e:68:47:bf:79:56:52:f0:ec:03:6b。请联系您的系统管理员。在 /home/emerson/.ssh/known_hosts 中添加正确的主机密钥以消除此消息。/home/emerson/.ssh/known_hosts:377 中有问题的键

host1 的 RSA 主机密钥已更改,您已请求严格检查。主机密钥验证失败。

它让我登录了几秒钟,然后关闭了连接。

host1:~/.ssh # 从远程主机读取 host1: Connection reset by peer 与 host1 的连接关闭。

有谁知道发生了什么以及我能做些什么来解决这个问题?

security ssh rsa man-in-the-middle hostkey
  • 6 6 个回答
  • 182128 Views

6 个回答

  • Voted
  1. Best Answer
    Adam Gibbins
    2009-05-09T03:47:52+08:002009-05-09T03:47:52+08:00

    请不要按照某些人的建议删除整个 known_hosts 文件,这完全可以消除警告的意义。这是一项安全功能,可警告您可能发生了中间人的攻击。

    我建议您确定为什么它认为某些事情发生了变化,很可能是由于可能的安全漏洞,SSH 升级更改了加密密钥。然后,您可以从 known_hosts 文件中清除该特定行:

    sed -i 377d ~/.ssh/known_hosts
    

    这将删除第377行,如警告中冒号后所示:

    /home/emerson/.ssh/known_hosts:377

    或者,您可以通过执行以下操作删除相关密钥

    ssh-keygen -R 127.0.0.1 (obviously replace with the server's IP)
    

    在清除特定密钥之前,请不要清除整个文件并确保这实际上是您要连接的机器。

    • 89
  2. Joel G Mathew
    2013-08-16T08:38:41+08:002013-08-16T08:38:41+08:00

    我认为虽然这里的一些答案解决了 OP 问题中推荐的行动方案,但它并没有完全回答这个问题。

    问题说明“如何在 SSH 中删除严格的 RSA 密钥检查,这里有什么问题?”

    正如其他一些人所建议的那样,这里的问题是主机的更改可能是由于重新安装服务器(最常见的情况)。推荐的解决方案确实是使用内联 sed 从 .ssh/authorized_keys 文件中删除有问题的密钥。

    但是,我没有看到任何答案解决了“如何在 SSH 中删除严格的 RSA 密钥检查”问题的特定部分。

    您可以删除 ssh 配置文件中的 StrictHostKey 检查,该文件通常存储在~/.ssh/config.

    下面提供了一个示例主机块:

    Host 101
      HostName yourip|hostname
      User youruserid
      IdentityFile /path/to/keyfile
      Port 22
      StrictHostKeyChecking no
    

    特别添加的行是最后一行StrictHostKeyChecking no。根据您的具体情况,这可能对您有用,例如在专用服务器上运行多个虚拟化容器,仅在几个 ip 上,在同一 ip 上停止和启动另一个实例。

    • 34
  3. Greg Dougherty
    2013-10-11T08:17:11+08:002013-10-11T08:17:11+08:00

    删除 StrictHostKeyChecking 的另一种方法,当您只需要为单个服务器执行此操作时:

    ssh <server> -o StrictHostKeyChecking=no
    
    • 16
  4. Dave Cheney
    2009-05-10T06:51:53+08:002009-05-10T06:51:53+08:00

    首先,这是你的机器吗?您是否故意更改了主机密钥?如果不是,我会非常担心某些东西改变了这些数据。

    其次,打开ssh调试,

    ssh -vvv user@host
    

    看看它告诉你什么,也试着在你试图连接的服务器上查看 /var/log/secure 和 /var/log/messages 以获取线索,sshd 会给出很好的错误消息。

    第三,这台机器是否连接到互联网?你真的应该允许root登录吗?

    • 6
  5. user1797
    2009-05-09T03:41:12+08:002009-05-09T03:41:12+08:00

    你得到这个是因为有些东西发生了变化(比如新的 NIC、新的 IP、服务器软件的变化等)。安全焦点有一篇关于SSH 主机密钥保护的好文章。

    只需通过编辑文件从服务器中删除密钥(使用 SFTP 或类似方法)$HOME/.ssh/known_hosts,并在下次连接时接受新密钥。

    由于 StrictHostKeyChecking 设置,您的连接可能会断开。有关类似问题,请参阅此线程。

    • 3
  6. Mark
    2015-06-06T05:26:48+08:002015-06-06T05:26:48+08:00

    作为“主机”[广义上的定义,它可以是从重新安装/多重引导到具有您之前连接到的 IP 地址的完全不同的计算机的所有内容,例如] 对 ssh 客户端来说似乎已经改变,它给了你错误。

    没有必要关闭严格检查,批量删除已保存的密钥也不明智。

    对于特定的主机名或 IP 地址,在 known_hosts 中列出两个不同的键是很可能的;根据您是否认为可能需要当前存储在 known_hosts 中的“旧”密钥,为您提供 2 种选择

    要么在 OP 的 known_hosts 的 l377 处删除它所指的特定密钥,要么同时保留两者

    保留两者的最简单方法,避免删除 known_hosts 中的键,是

    1. 编辑 known_hosts 以在 known_hosts [@l377] 中引用的“旧”条目的开头添加 # 临时
    2. 连接 [ssh to the host],同意提示“自动”添加新密钥
    3. 然后重新编辑 known_hosts 删除#

    “在 known_hosts 中添加正确的主机密钥”/每个主机名多个 ssh 主机密钥的更多答案?

    • 3

相关问题

  • 为什么使用authorized_keys通过ssh自动登录不起作用?

  • 如何启用与 SQL Server 实例的加密连接?

  • 从多个位置保护远程服务器/工具访问的最佳方法是什么?

  • 在 SOHO 环境中实施的最佳 VPN 技术是什么?[关闭]

  • 保护新的 Ubuntu 服务器 [关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve