ssh 拒绝连接并显示消息“无主机密钥算法”

ssh 拒绝连接并显示消息“无主机密钥算法”

我的 SSH 连接运行良好,但从上周开始,我的笔记本电脑与主板之间的 SSH 连接拒绝连接。我可以从主板与笔记本电脑建立 SSH 连接,但反之则不行。我尝试使用我的用户和 root 用户进行连接,但遇到了同样的问题。

我的笔记本电脑是 Ubuntu 12.10,主板是 Debian 6。

以下是 SSH 的详细输出:

danialbehzadi@danial-HP:~$ ssh -v 192.168.1.2  
OpenSSH_5.2p1,OpenSSL 1.0.1c 2012 年 5 月 10 日
debug1:读取配置数据 /usr/local/etc/ssh_config
debug1:连接到192.168.1.2[192.168.1.2]端口22。
debug1:连接已建立。  
debug1:身份文件/home/danialbehzadi/.ssh/身份类型-1  
debug1:身份文件/home/danialbehzadi/.ssh/id_rsa 类型 1  
debug1:身份文件/home/danialbehzadi/.ssh/id_dsa 类型 -1  
debug1:远程协议版本2.0,远程软件版本OpenSSH_6.0p1 Debian-4  
调试1:匹配:OpenSSH_6.0p1 Debian-4 pat OpenSSH*  
debug1:启用协议 2.0 的兼容模式  
debug1:本地版本字符串 SSH-2.0-OpenSSH_5.2  
debug1:SSH2_MSG_KEXINIT 已发送  
debug1: 收到 SSH2_MSG_KEXINIT  
debug1:kex:服务器->客户端aes128-ctr hmac-md5 none  
debug1:kex:客户端->服务器aes128-ctr hmac-md5 none  
无主机密钥算法

答案1

我在主板上制作了新的 rsa 和 dsa 密钥,一切顺利:

~# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
~# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key

答案2

我在将旧客户端连接到 Slackware 15 服务器时遇到了同样的问题。此主题是最佳结果,ssh "no hostkey alg"但现有的答案无法解决我的问题,因此我采用以下方法。

连接尝试失败后,我在服务器的 /var/log/messages 中发现了以下内容:

sshd[pid]: Unable to negotiate with x.x.x.x port yyyyy: no matching host key type found. Their offer: [email protected],[email protected],ssh-rsa,ssh-dss [preauth]

在咨询了sshd_config 手册页,我在服务器的 /etc/ssh/sshd_config 中添加了这一行:

HostKeyAlgorithms +ssh-rsa,ssh-dss

然后我重新加载了 sshd(在服务器上):killall -HUP sshd

现在我的老客户端可以再次连接了。

答案3

对我来说,该错误与在某些系统(OpenSSH_5.3p1)上使用(非常)旧的客户端到 ESXI 7.x SSHd 有关。

当从较新的 SSH 客户端连接时,问题不再存在,我可以正常连接。

追踪ssh -vv到我的主机(使用较旧的客户端):

debug2: kex_parse_kexinit: hmac-sha2-256,hmac-sha2-512
debug2: kex_parse_kexinit: hmac-sha2-256,hmac-sha2-512
debug2: kex_parse_kexinit: none
debug2: kex_parse_kexinit: none
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: mac_setup: found hmac-sha2-256
debug1: kex: server->client aes128-ctr hmac-sha2-256 none
debug2: mac_setup: found hmac-sha2-256
debug1: kex: client->server aes128-ctr hmac-sha2-256 none
no hostkey alg

答案4

[root@server ~]# ls -la /etc/ssh/ssh_host_*

-rw-------. 1 root root      668 Jun 25 00:03 /etc/ssh/ssh_host_dsa_key
-rw-r--r--. 1 root root      609 Jun 25 00:03 /etc/ssh/ssh_host_dsa_key.pub
-rw-r-----. 1 root ssh_keys  227 Dec 14  2018 /etc/ssh/ssh_host_ecdsa_key
-rw-r--r--. 1 root root      162 Dec 14  2018 /etc/ssh/ssh_host_ecdsa_key.pub
-rw-r-----. 1 root ssh_keys  387 Dec 14  2018 /etc/ssh/ssh_host_ed25519_key
-rw-r--r--. 1 root root       82 Dec 14  2018 /etc/ssh/ssh_host_ed25519_key.pub
-rw-------. 1 root root      963 Apr 18  2011 /etc/ssh/ssh_host_key
-rw-r--r--. 1 root root      627 Apr 18  2011 /etc/ssh/ssh_host_key.pub
-rw-------. 1 root root     1679 Jun 25 00:02 /etc/ssh/ssh_host_rsa_key
-rw-r--r--. 1 root root      401 Jun 25 00:02 /etc/ssh/ssh_host_rsa_key.pub

确保文件 ssh_host_* 模式为 644 和 600,如下所示

相关内容