首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅在其中一个客户端上ssh主机密钥验证失败

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

Stack Overflow用户
提问于 2011-02-19 05:40:28
回答 3查看 11.7K关注 0票数 1

我不能从客户端"A“到服务器"B”(但我可以从许多其他ssh客户端在同一个子网上,而不是"A“-所有都是*nux机器)

serverA>ssh -v -p端口用户@serverB

代码语言:javascript
复制
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.  

我已经在客户端A上检查了以下几个pts -因为服务器A看起来就是重点--

用户_A/.ssh目录权限: 700 (见man )

  • user_A/.ssh/known_hosts权限: 644 (请参阅man )

  • user_A/.ssh/known_hosts:不包含serverB主机公钥

  • otherusers/.ssh/known_hosts:不内容serverB主机公钥

我试过:

服务器A上删除相同错误的error

  • checking

  • regenerating服务器B主机密钥( ssh /etc/ ssh _ host _rsa_ key )

  • regenerating服务器B主机密钥(ssh-keygen -t dsa/etc/ssh_ host _dsa/etc/ssh_host_ dsa/rsa _key):相同的错误

  • ssh -p /localhost@localhost on serverB:它也与其他ssh客户端

-f /etc/ssh_host_dsa/rsa_key一样工作。

所以我现在真的很累了!ssh专家欢迎回家。

Thx预先

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-20 18:28:26

不明白我在这台服务器上到底做错了什么。奇怪的是,在客户端销毁"known_hosts“并没有达到预期的积极效果。

无论如何,请在下面找到我手工做的事,很难看,但是很管用:

注意:这假定对两台机器(客户机和服务器)都有完全的访问权限。

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

代码语言:javascript
复制
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key  
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

客户端

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

代码语言:javascript
复制
ssh-keygen -t dsa -f /home/foo/.ssh/my_client_key  

如果运行,则将此新密钥添加到ssh代理中。

代码语言:javascript
复制
ssh-add /home/foo/.ssh/my_client_key  

在IP/端口之后,将服务器ssh_host_rsa_key.pub的内容添加到客户机/home/foo/..ssh/知名主机中:

代码语言:javascript
复制
[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/..ssh/my_ client _key.PUB到/home/bar/..ssh/. into _ key,以便连接到用户"foo“以连接到"bar”帐户:

确保路径与/etc/ssh/sshd_config的一致性,以便tu能够使用文件.authorized_keys:

代码语言:javascript
复制
AuthorizedKeysFile      %h/.ssh/.authorized_keys  

重新启动ssh服务器

代码语言:javascript
复制
/etc/init.d/ssh restart  

client :现在客户机"foo“可以ssh到服务器上的用户"bar”:

代码语言:javascript
复制
foo@client>$ ssh -p PORT bar@server_ip  

注意:在我的例子中,客户端和服务器都在VM的本地运行。显然不要将这些设置用于生产。

编辑:更仔细地阅读man页面,应该可以以一种非常恰当的方式处理这个问题:“StrictHostKeyChecking选项可用于控制主机密钥未知或已更改的机器的登录。”

票数 3
EN

Stack Overflow用户

发布于 2012-04-12 00:34:45

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

问题的起因是ssh抱怨“ssh-askpass”没有被找到。这方面的工作是取消$DISPLAY环境变量(是的,完全显而易见)。我在某个地方读到,如果设置了显示,OpenSSH将尝试使用ssh-askpass。所以我做了这个

代码语言:javascript
复制
unset DISPLAY

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

代码语言:javascript
复制
http://knol.google.com/k/how-to-use-ssh-keygen# 

我创建了RSA密钥和DSA密钥。我想RSA是旧的,DSA是新的。(看起来它使用的是RSA密钥。)不管怎样,这并不能单独解决问题。

然后我尝试将服务器的"B“公钥复制回客户端”A“的known_hosts。

从服务器B抓取

代码语言:javascript
复制
/etc/ssh/ssh_host_rsa_key.pub

然后将其内容添加到

代码语言:javascript
复制
~/.ssh/known_hosts

在客户端"A“上,服务器的IP地址"B”加到开头(和一个空格)。

代码语言:javascript
复制
192.168.0.200 ssh-rsa QbJfEdeu4rsgeAAAAAB3Nza.... etc ... ==

一个有用的调试技巧是使用-vvv选项对ssh进行超冗长的输出。

票数 0
EN

Stack Overflow用户

发布于 2014-12-09 23:44:50

作为将来的参考,我通过做(从客户端)解决了我认为相同的问题。

代码语言:javascript
复制
$ 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=

然后,我删除了~/.ssh/known_hosts中的所有内容,并复制、粘贴了这两个键,就像它们出现在~/.ssh/known_hosts中一样。

实际上,我只是在一开始复制粘贴ssh-rsa one,因为我认为这是我正在使用的。由于某些原因,这是行不通的,当我复制粘贴第二个钥匙在它的工作就像一个魅力。还要注意的是,我在服务器上的sshd配置中启用了PasswordAuthentication,这样就不用担心密钥了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5049119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档