![ssh 拒绝连接并显示消息“无主机密钥算法”](https://linux22.com/image/832880/ssh%20%E6%8B%92%E7%BB%9D%E8%BF%9E%E6%8E%A5%E5%B9%B6%E6%98%BE%E7%A4%BA%E6%B6%88%E6%81%AF%E2%80%9C%E6%97%A0%E4%B8%BB%E6%9C%BA%E5%AF%86%E9%92%A5%E7%AE%97%E6%B3%95%E2%80%9D.png)
我的 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,如下所示