我通过 ssh 进入了一个 Linux 服务器。我需要通过重新安装全新操作系统来更新我的本地 Linux 操作系统。我保存了旧的~/.ssh
并将其复制回来。但现在,当我尝试 ssh 进入服务器时,我得到以下信息:
Unable to negotiate with [server's IP] port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
当我这样做时ssh -Q key
,结果包括ssh-rsa
和ssh-dss
。
服务器很旧,很可能已经过时,但我无法控制这一点。
编辑:哇,仅仅因为在一个专为寻求帮助而设计的网站上寻求帮助而投了反对票。如果我说我有点惊讶,那我是在撒谎。这就是为什么我从来不尊重或关心 stackoverflow 及其对超龄霍尔监视器毒性的积极修饰。
答案1
检查系统范围的 SSH 配置 ( /etc/ssh/ssh_config
):也许新的 Linux 安装有旧安装没有的东西。
此外,sshd
当新的 SSH 客户端向它们提供大量可协商选项时,一些非常旧的实现可能会感到困惑,因为旧服务器没有为新客户端提供的所有选项分配足够的缓冲区空间。
尝试ssh -o HostKeyAlgorithms=ssh-rsa,ssh-dss username@old-host
。如果这导致您收到不同的错误消息,那么您可能还必须限制其他可协商的选项。