如何停止:无法与[MyIP]端口22协商:找不到匹配的密钥交换方法。他们的报价:diffie-hellman-group1-sha1

如何停止:无法与[MyIP]端口22协商:找不到匹配的密钥交换方法。他们的报价:diffie-hellman-group1-sha1

我继承了一个托管的 Linux 服务器,我们所有的邮件和其他东西都在这里组织。使用 Debian Linux。

我猜他已经有 10 年没碰过任何东西了,所以都是很老的东西了。

每次我想通过 SSH 连接时,都会出现以下短语:

Unable to negotiate with [MyIP] port 22: no matching key exchange method
found. Their offer: diffie-hellman-group1-sha1

我知道此后正确的命令是:

ssh -oKexAlgorithms=diffie-hellman-group1-sha1 -c aes128-cbc root@[MyIP]

但我真正不明白的是为什么会发生这种情况,我必须做什么才能让它停止出现?

SSH版本是否太旧?或者我可以更新 SSH 而不会出现登录问题吗?

是Debian吗?我可以通过 SSH/Bash 更新我的 Debian 吗?

答案1

听起来您继承的服务器运行的是非常旧版本的 Debian。如果如您所说,它已经 10 年没有升级,那么它可能正在运行 Squeeze 或 Wheezy。这两者都很古老,确实不应该在公共互联网上进行生产使用。

要了解哪个版本,请尝试查看诸如/etc/debian_version/etc/os-release/etc/motd、之类的文件/etc/issue。另外,/etc/apt/sources.list以及目录中的任何文件/etc/apt/sources.list.d/- 了解安装的 Debian 版本是重要且有用的信息,特别是如果您打算将其升级到更新的版本。

不可能向您提供有关如何处理服务器的完整分步说明,因此这里有一些有用的提示:

  1. ...no matching key exchange method...错误消息是因为服务器正在运行旧版本的sshd,其中使用了已弃用的密码和密钥交换方法。

    您应该尽快升级它(过时的密码被弃用是有充分理由的),但与此同时,您可以将本地客户端配置为在连接到服务器时ssh始终使用。编辑并添加以下内容:diffie-hellman-group1-sha1aes128-cbc~/.ssh/config

    Host your_server_name
     KexAlgorithms diffie-hellman-group1-sha1
     Ciphers aes128-cbc
    

    您还可以使用服务器的 IP 地址代替(或同时使用)“your_server_name”。顺便说一句,sshd在服务器升级到现代版本后,不要忘记撤消此操作。

  2. 如果您的服务器运行的是 Debian,您将能够升级它......并且从 bash 命令行通过 ssh 远程升级它是没有问题的。您必须使用aptapt-getaptitude其他命令行工具,而不是像这样的图形工具,synaptic但 Debian 被设计为像这样就地升级。

    建议的过程是一次升级一个版本,从当前运行的版本升级到下一版本。例如,如果当前安装了 Debian 6(“Squeeze”),您可以将其升级到 Debian 7(“Wheezy”),然后升级到 Debian 8(“Jessie”),依此类推,直到运行 Debian 11(“Bullseye”) )。有关于 Debian 发行历史和版本编号/命名的很好的总结,位于https://en.wikipedia.org/wiki/Debian_version_history

    顺便说一句,我所说的“推荐程序”是指 Debian 仅真正保证从一个发行版本成功升级到下一个发行版本。在某些情况下,可以一次跳转两个或多个版本,但我建议不要考虑尝试这样做,特别是如果您没有物理访问计算机的权限,特别是当安装的 Debian 版本是如此古老。尝试这样做很可能会导致系统损坏(并且可能无法修复)。

    每次升级时可能都需要手动重新配置一些内容。大多数软件包都没有问题,但有些软件包在安装的各种守护进程(例如 sshd、apache、nginx、squid、postfix 或安装的任何其他软件包)中会存在不兼容性、新功能和/或已弃用的旧功能。

    注意:主要的 debian 档案仅包含当前稳定版本 (Bullseye) 和 oldstable (Buster) 的存储库。旧版本可在https://www.debian.org/distrib/archive并且您必须在您的sources.list URL 中使用archive.debian.org URL(或其附近的镜像)。

    例如,deb http://ftp.au.debian.org/debian/ wheezy main contrib non-free您必须使用而不是类似的东西deb http://archive.debian.org/debian/ wheezy main contrib non-free

  3. 每当您升级时sshd,我强烈建议通过尝试从另一个终端窗口或选项卡进行 ssh 来测试新版本是否正常工作。 sshd在验证新版本可以正常工作之前,请勿注销当前的 ssh 会话 否则您可能无法重新登录 - 在某些时候(我记不清具体是哪个版本),新的 sshd 将不再支持旧的密码或密钥交换方法,因此您必须撤消您所做的配置更改为你做的~/.ssh/config。在某些时候,您可能还需要/etc/ssh/sshd_config对服务器进行一些小的更改。

    这是极其重要且非常值得重复的:

    在确认可以再次登录之前,请勿注销您的 ssh 会话。

  4. 您可能会发现,备份数据和配置文件、擦除服务器、全新安装 Debian 11,然后恢复数据和配置文件比升级多个版本的 Debian 更容易。如果它只运行一些重要的服务,可能会容易得多。

    更好的选择是租用第二台托管服务器,在其上安装 Debian 11,然后逐步将服务从旧服务器迁移到新服务器。这可能是最简单的方法,而且最不容易出现问题或失败 - 您可以一次迁移每一项服务,并在切换到每一项新服务之前测试它是否正常工作。它让你有时间思考并避免在恐慌或极端时间压力下可能犯的错误。

    无论哪种方式,您都需要有一个完整的列表,其中列出了它正在运行的内容和原因,以及每个服务在该特定计算机上继续运行的重要性,或者它是否可以退役或迁移到另一台计算机。充分了解这些程序的作用、它们的工作原理以及如何配置它们也很重要。

    其中一些可以通过调查系统及其配置文件来获得,而另一些则只能通过与组织中的人员交谈并让高级人员就特定服务的重要性和优先级做出决策来获得 - 升级过程将漫长而乏味,并且在各个阶段至少会出现暂时的中断,因此 CYA 通过让经理做出决定来解决。请记住,当系统管理员做得很好时,没有人会注意到,但是大家当事情发生变化时会注意到。

    简而言之,不要在没有周密计划的情况下就立即进行升级。您需要规划升级的每个步骤,并且该计划应包括测试每次升级后每个重要服务是否仍正常运行。

  5. 在做任何事情之前备份所有内容。另外,如果计算机正在运行任何类型的 RAID,请记住 RAID 不能替代备份。备份无可替代。如果您的服务器当前没有定期备份计划,那么设置一个备份计划可能应该是您要做的第二件事。首先应该是进行当前备份。

  6. 您应该通过在虚拟机上安装 Squeeze 或 Wheezy 来练习升级,然后完成将其一直升级到 Bullseye 的过程。它不会与升级真实服务器完全相同,但至少您会非常熟悉该过程。您可以在每个升级步骤之前拍摄虚拟机的快照,以便在出现无法轻松修复的问题时可以进行恢复。

  7. 每个 Debian 版本都附带升级说明,告诉您主要变化和不兼容性。您应该在每次升级之前阅读这些内容。

相关内容