1

クライアント「A」からサーバー「B」にSSH接続できません(ただし、「A」以外の同じサブネット上の他の多くのsshクライアントから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でこれらの次のポイントをチェックしました-サーバーAがポイントであるように見えるので-:

  • user_A / .sshディレクトリのアクセス許可:700(man sshを参照)
  • user_A / .ssh / known_hosts権限:644(man sshを参照)
  • user_A / .ssh / known_hosts:serverBホストの公開鍵をコンテンツ化しません
  • otherusers / .ssh / known_hosts:serverBホストの公開鍵をコンテンツ化しません

私はもう試した :

  • サーバーAのknown_hostsを削除します:同じエラーが残ります
  • サーバーAのknown_hostsを空にする:同じエラー
  • ホストキー名がsshサーバー構成と一致しているかどうかを確認します:ok(HostKey / etc / ssh / ssh_host_rsa_key)
  • サーバーBホストキーの再生成(ssh-keygen -t dsa / rsa -f / etc / ssh / ssh_host_dsa / rsa_key):同じエラー
  • serverB上のssh-pPORT me @ localhost:他のsshクライアントからも機能します

だから私は今本当に積み重ねられています!sshスペシャリストが家を歓迎します。

事前にThx

4

3 に答える 3

3

この特定のサーバーに対して私が何を間違えたのか正確にはわかりません。「奇妙な」ままであるのは、クライアント側で「known_hosts」を破棄しても期待されるプラスの効果が得られなかったことです。

とにかく、plsは今後、私が手動で行ったことを非常に醜いものとして見つけますが、機能します。
注:これは、両方のマシン(クライアントとサーバー)へのフルアクセスを前提としています。

サーバー側: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-agentに追加します

ssh-add /home/foo/.ssh/my_client_key  

サーバーssh_host_rsa_key.pubのコンテンツを、IP/ポートの後にクライアント/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)

サーバー側に戻ります

ユーザー「foo」への接続が「bar」アカウントに接続できるようにするには、クライアントの公開鍵/home/foo/.ssh/my_client_key.pubをコピーして/home/bar/.ssh/.authorized_keysに貼り付けます。

/ etc / ssh / sshd_configとのパスの整合性を確認して、ファイル.authorized_keysを使用できるようにします。

AuthorizedKeysFile      %h/.ssh/.authorized_keys  

sshサーバーを再起動します

/etc/init.d/ssh restart  

クライアント:クライアント「foo」がサーバー上のユーザー「bar」にSSH接続できるようになりました:

foo@client>$ ssh -p PORT bar@server_ip  

注:私の場合、クライアントとサーバーの両方がVM内でローカルに実行されています。明らかに、これらの設定を本番環境に使用しないでください。

編集:man sshページをもう少し注意深く読むと、これをかなり適切な方法で回避できるはずです。manを参照してください。「StrictHostKeyCheckingオプションを使用して、ホストキーが不明なマシンへのログインを制御できます。変更されました。"

于 2011-02-20T18:28:26.487 に答える
0

私が制御できない組み込みシステムでも、同じ問題が発生しました。私が修正した方法は、すべての公開鍵を両側に手動でインストールすることだったと思います。

問題は、「ssh-askpass」が見つからなかったというsshの不満から始まりました。この回避策は、$ 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アドレスが先頭(および1つのスペース)に付加されている

192.168.0.200 ssh-rsa QbJfEdeu4rsgeAAAAAB3Nza.... etc ... ==

デバッグのヒントとして役立つのは、-vvvオプションを使用してsshを実行し、非常に詳細な出力を取得することです。

于 2012-04-12T00:34:45.557 に答える
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、2つのキーを表示されたとおりにコピーして貼り付けました~/.ssh/known_hosts


実際にssh-rsaをコピーして貼り付けたのは、それが私が使っていたものだと思ったからです。どういうわけかうまくいかなかったのですが、2番目のキーをコピーして貼り付けると、チャームのように機能しました。また、キーを気にしないように、サーバーのsshd構成でPasswordAuthenticationを有効にしたことにも注意してください。

于 2014-12-09T23:44:50.603 に答える