我无法从客户端“A”ssh到服务器“B”(但我可以从与“A”相同的子网上的许多其他ssh客户端 - 所有都是* nux机器)
serverA> ssh -v -p PORT 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.
我已经在客户端A上检查了以下这些pts - 因为服务器A看起来很重要 - :
我试过了:
所以我现在真的很累! ssh专家欢迎回家。
提前谢谢
答案 0 :(得分:2)
不明白我为这个特定服务器做错了什么。 仍然“奇怪”的是,在客户端销毁“known_hosts”并没有达到预期的积极效果。
无论如何,请在此后找到我手动完成的工作,非常难看,但有效: 注意:这假定完全访问两台计算机(客户端和服务器)
服务器端:重新生成2对密钥(rsa和dsa)
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
客户端:
为用户“foo”生成一对dsa密钥(私有和公共)
ssh-keygen -t dsa -f /home/foo/.ssh/my_client_key
如果正在运行
,请将此新密钥添加到ssh-agentssh-add /home/foo/.ssh/my_client_key
在IP /端口之后将服务器ssh_host_rsa_key.pub的内容添加到客户端/home/foo/.ssh/known_hosts:
[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_keys中,以便允许连接到用户“foo”以连接到“bar”帐户:
确保与/ etc / ssh / sshd_config的路径一致性,以便能够使用该文件.authorized_keys:
AuthorizedKeysFile %h/.ssh/.authorized_keys
重启ssh服务器
/etc/init.d/ssh restart
客户端:现在客户端“foo”可以ssh到服务器上的用户“bar”:
foo@client>$ ssh -p PORT bar@server_ip
注意:就我而言,客户端和服务器都在VM中本地运行。请勿将这些设置用于生产。
编辑:仔细阅读man ssh页面,应该可以以一种非常恰当的方式解决这个问题,请向男士们说:“StrictHostKeyChecking选项可用于控制登录到主机密钥未知或已更改的计算机。“
答案 1 :(得分:0)
我遇到了同样的问题,在我无法控制的嵌入式系统上。我认为我修复它的方法是手动安装两侧的所有公钥。
问题始于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”的known_hosts。这很有效!
从服务器B,抓住
/etc/ssh/ssh_host_rsa_key.pub
然后将其内容添加到
~/.ssh/known_hosts
客户端“A”上的,服务器“B”的IP地址前置于开头(和一个空格)
192.168.0.200 ssh-rsa QbJfEdeu4rsgeAAAAAB3Nza.... etc ... ==
一个有用的调试技巧是使用-vvv选项来ssh获得超级详细输出。
答案 2 :(得分:0)
为了将来参考,我通过(从客户端)
修复了我认为同样的问题$ 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,因为我认为这就是我所使用的。由于某些原因,当我复制粘贴时,第二个键就像一个魅力。值得注意的是,我在服务器上的sshd配置中启用了PasswordAuthentication,以免担心密钥。