ssh主机密钥验证仅在一个客户端上失败

ssh主机密钥验证仅在一个客户端上失败,ssh,verification,openssh,Ssh,Verification,Openssh,我不能从客户端“A”到服务器“B”进行ssh(但我可以从除“A”之外的同一子网上的许多其他ssh客户端进行ssh)-所有这些客户端都是*nux机器) serverA>ssh-v-p端口user@serverB OpenSSH_5.3p1 Debian-3ubuntu5, OpenSSL 0.9.8k 25 Mar 2009 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for

我不能从客户端“A”到服务器“B”进行ssh(但我可以从除“A”之外的同一子网上的许多其他ssh客户端进行ssh)-所有这些客户端都是*nux机器)

serverA>ssh-v-p端口user@serverB

OpenSSH_5.3p1 Debian-3ubuntu5, OpenSSL 0.9.8k 25 Mar 2009  
debug1: Reading configuration data /etc/ssh/ssh_config  
debug1: Applying options for *  
debug1: Connecting to serverB [serverB] port PORT.  
debug1: Connection established.  
debug1: identity file /home/user_A/.ssh/id_rsa type -1  
debug1: identity file /home/user_A/.ssh/id_dsa type 2  
debug1: Checking blacklist file /usr/share/ssh/blacklist.DSA-1024  
debug1: Checking blacklist file /etc/ssh/blacklist.DSA-1024  
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5  
debug1: match: OpenSSH_5.1p1 Debian-5 pat OpenSSH*  
debug1: Enabling compatibility mode for protocol 2.0  
debug1: Local version string SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu5  
debug1: SSH2_MSG_KEXINIT sent  
debug1: SSH2_MSG_KEXINIT received  
debug1: kex: server->client aes128-ctr hmac-md5 none  
debug1: kex: client->server aes128-ctr hmac-md5 none  
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent  
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP  
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent  
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY  
debug1: checking without port identifier  
Host key verification failed.  
OpenSSH_5.3p1 Debian-3ubuntu5,OpenSSL 0.9.8k 2009年3月25日
debug1:读取配置数据/etc/ssh/ssh\u config
debug1:将选项应用于*
debug1:连接到serverB[serverB]端口。
debug1:已建立连接。
debug1:identity file/home/user\u A/.ssh/id\u rsa type-1
debug1:identity file/home/user_A/.ssh/id_dsa类型2
debug1:正在检查黑名单文件/usr/share/ssh/blacklist.DSA-1024
debug1:正在检查黑名单文件/etc/ssh/blacklist.DSA-1024
debug1:远程协议版本2.0,远程软件版本OpenSSH_5.1p1 Debian-5
debug1:match:OpenSSH_5.1p1 Debian-5 pat OpenSSH*
debug1:启用协议2.0的兼容模式
debug1:本地版本字符串SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu5
debug1:SSH2\u MSG\u KEXINIT已发送
debug1:SSH2\u MSG\u KEXINIT已收到
debug1:kex:server->client aes128 ctr hmac-md5无
debug1:kex:客户端->服务器aes128 ctr hmac-md5无

debug1:SSH2\u MSG\u KEX\u DH\u GEX\u请求(1024我不明白我在这个特定服务器上到底做错了什么。。 仍然“奇怪”的是,在客户端销毁“已知主机”并没有达到预期的积极效果

不管怎样,请在以后找到我手动完成的操作,非常难看,但有效:
注意:这假设对两台机器(客户端和服务器)都有完全访问权限

服务器端:重新生成2对密钥(rsa和dsa)

客户端
为用户“foo”生成一对dsa密钥(私有和公共)

如果正在运行,请将此新密钥添加到ssh代理

ssh-add /home/foo/.ssh/my_client_key  
将服务器ssh\u host\u rsa\u key.pub的内容添加到client/home/foo/.ssh/known\u hosts的IP/端口之后:

[server_ip]:server_port copy/paste here the server public rsa key (ctrl+shift+C/V)  
[server_ip]:server_port copy/paste here the server public dsa key (ctrl+shift+C/V)
现在回到服务器端

将客户端公钥/home/foo/.ssh/my_client_key.pub复制/粘贴到/home/bar/.ssh/.authorized_密钥中,以允许连接到用户“foo”以连接到“bar”帐户:

确保路径与/etc/ssh/sshd_config一致,以便能够使用该文件。授权_密钥:

AuthorizedKeysFile      %h/.ssh/.authorized_keys  
重新启动ssh服务器

/etc/init.d/ssh restart  
客户端:现在客户端“foo”可以ssh到服务器上的用户“bar”:

foo@client>$ ssh -p PORT bar@server_ip  
注意:在我的情况下,客户端和服务器都在VM内本地运行。显然,不要将这些设置用于生产


编辑:仔细阅读ssh手册页面,应该可以以非常正确的方式解决这个问题,参考手册:“StrictHostKeyChecking选项可用于控制主机密钥未知或已更改的机器的登录。”

在一个我无法控制的嵌入式系统上,我也遇到了同样的问题。我想我解决这个问题的方法是在两侧手动安装所有公钥

问题始于ssh抱怨找不到“ssh askpass”。解决方法是取消设置$DISPLAY环境变量(是的,非常明显)。我在某个地方读到,如果设置了DISPLAY,OpenSSH将尝试使用ssh askpass。所以我这样做了

unset DISPLAY
然后我基本上在OP中得到了错误消息。所以,继续,我在这个页面上做了所有的事情来创建和复制A到B的公钥

http://knol.google.com/k/how-to-use-ssh-keygen# 
我创建了RSA密钥和DSA密钥。我猜RSA更老,DSA更新。(看起来它使用的是RSA密钥。)总之,这并不能单独解决问题

然后,我尝试将服务器“B”公钥复制回客户端“A”的已知\u主机,结果成功了

从服务器B抓取

/etc/ssh/ssh_host_rsa_key.pub
然后将其内容添加到

~/.ssh/known_hosts
在客户端“A”上,服务器“B”的IP地址在开头(和一个空格)之前


一个有用的调试技巧是使用ssh的-vvv选项来获得超级详细的输出。

为了以后的参考,我(从客户端)修复了我认为相同的问题

然后,我删除了
~/.ssh/known_hosts
中的所有内容,并按照
~/.ssh/known_hosts
中显示的方式复制粘贴了这两个密钥


实际上,我一开始只是复制粘贴了ssh-rsa-one,因为我认为这就是我正在使用的。由于某种原因,当我复制粘贴第二个密钥时,它的效果非常好。值得注意的是,我在服务器上的sshd配置中启用了密码身份验证,以便不必担心密钥

/etc/ssh/ssh_host_rsa_key.pub
~/.ssh/known_hosts
192.168.0.200 ssh-rsa QbJfEdeu4rsgeAAAAAB3Nza.... etc ... ==
$ ssh-keyscan [HOST-SERVER-IP]
# [HOST-SERVER-IP] SSH-2.0-OpenSSH_6.7
[HOST-SERVER-IP] ssh-rsa AAAAB3NzaC1yc2EAAAADA ... etc ... +Zl
# [HOST-SERVER-IP] SSH-2.0-OpenSSH_6.7
[HOST-SERVER-IP] ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTI ... etc ... +1w=