- - PR -
SSH ホストベース認証でuserauth_hostbased mismatch
1
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-04-20 01:02
ホストベース認証でSSH接続したいのですが、下記エラーが出ます。
■サーバー側の/var/log/messages ---- Apr 20 00:41:01 <myhost> sshd[28628]: userauth_hostbased mismatch: client sends ntp.<mydomain>, but we resolve 192.168.1.3 to www.<mydomain> ---- 「クライアントからはntp.<mydomain>(192.168.1.3)で認証しにきたが、 192.168.1.3 を名前解決したら www.<mydomain> だったからミスマッチだよ」 ということでしょうか? 192.168.1.3 には 様々なホスト名が割り振られているのですが、このエラーを 回避する方法を教えてください。 よろしくお願いいたします。 | ||||||||||||||||
|
投稿日時: 2006-04-20 01:32
こんばんわ.
で,実際にはどうなんでしょうか?
sshd が動いている側での名前解決で, 「192.168.1.3 は ntp.<mydomain> です」と解決できればよろしいのでは? /etc/hosts の記述で管理できませんか? | ||||||||||||||||
|
投稿日時: 2006-04-20 01:43
こんばんは。いつもお世話になっております。
192.168.1.3 には 様々なホスト名が割り振られているので、 逆引きしたらそうなると思います。 実際、wwwのところは、dnsになったりmailになったり、接続を試みる度に かわります。
ntpのところも同様にかわります。 DNSを引かないような設定があればよいのですが... ちょっと文献をあさってみます。 | ||||||||||||||||
|
投稿日時: 2006-04-20 02:31
つまり,逆引きで round robbin しているんでしょうか? そのような必要があるのですか? 正引きではよくやりますが,逆引きではやるべきではないと思います.
引かないと困りませんか? 要するに「/etc/hosts 参照 -> 見当たらないので DNS 参照」 とすればよろしいのでは? /etc/nsswitch.conf をお調べください. | ||||||||||||||||
|
投稿日時: 2006-04-20 11:55
コメントありがとうございます。
お恥ずかしながら、/etc/nsswitch.confの役割を知りませんでした。 デフォルトで ---- hosts: files dns ---- となっていたので、何も触らなくてよいですね。 次に クライアント機、サーバー機の両方の /etc/hosts に 192.168.1.3 に対するホスト名を同じに設定したら、ラウンドロビンされることなく 最初の投稿のエラーは出なくなりました。 しかし、相変わらず認証は通りません。 ちょっと長くて申し訳ないのですが、SSH接続のログを貼り付けさせて いただきます。間にちょいちょい「私の理解」をコメントしています。 root# ssh -vvv <server> ---- OpenSSH_4.2-chrootsshp1, OpenSSL 0.9.7a Feb 19 2003 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * → 設定:/etc/ssh/ssh_config|Host * → 設定:/etc/ssh/ssh_config| HostbasedAuthentication yes → 設定:/etc/ssh/ssh_config| PreferredAuthentications hostbased → 設定:/etc/ssh/ssh_config| EnableSSHKeysign yes debug2: ssh_connect: needpriv 0 debug1: Connecting to <server> [192.168.1.1] port 22. debug1: Connection established. debug1: read PEM private key done: type DSA → 設定:/etc/ssh/ssh_config| IdentityFile /etc/ssh/ssh_host_dsa_key debug1: read PEM private key done: type RSA → 設定:/etc/ssh/ssh_config| IdentityFile /etc/ssh/ssh_host_rsa_key debug1: permanently_set_uid: 0/0 debug3: Not a RSA1 key file /etc/ssh/ssh_host_dsa_key. → DSAなので、確かにRSA1ではないが、なぜRSA1が比較対象になっているのか"?" → 設定:/etc/ssh/ssh_config| Protocol 2 debug2: key_type_from_name: unknown key type '-----BEGIN' debug3: key_read: missing keytype debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug2: key_type_from_name: unknown key type '-----END' debug3: key_read: missing keytype → -----BEGIN DSA PRIVATE KEY----- で始まり、-----END DSA PRIVATE KEY----- で終わるのは正常だと思う。 debug1: identity file /etc/ssh/ssh_host_dsa_key type 2 debug3: Not a RSA1 key file /etc/ssh/ssh_host_rsa_key. → ん? RSA1じゃない? RSA2なのかな?(※1) それならそれでよし。 debug2: key_type_from_name: unknown key type '-----BEGIN' debug3: key_read: missing keytype debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug2: key_type_from_name: unknown key type '-----END' debug3: key_read: missing keytype → -----BEGIN RSA PRIVATE KEY----- で始まり、-----END RSA PRIVATE KEY----- で終わるのは正常だと思う。 debug1: identity file /etc/ssh/ssh_host_rsa_key type 1 → ん? type 1って言われてるし。※1と矛盾。 debug1: Remote protocol version 2.0, remote software version OpenSSH_4.2-chrootssh debug1: match: OpenSSH_4.2-chrootssh pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_4.2-chrootssh → プロトコルは良さそう。 debug2: fd 3 setting O_NONBLOCK debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-rsa,ssh-dss debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib debug2: kex_parse_kexinit: none,zlib@openssh.com,zlib debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-rsa,ssh-dss debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr debug2: kex_parse_kexinit: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128,arcfour256,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: none,zlib@openssh.com debug2: kex_parse_kexinit: none,zlib@openssh.com debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: mac_init: found hmac-md5 debug1: kex: server->client aes128-cbc hmac-md5 none debug2: mac_init: found hmac-md5 debug1: kex: client->server aes128-cbc hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug2: dh_gen_key: priv key bits set: 134/256 debug2: bits set: 493/1024 debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY → この辺まで、よくわかりません。 debug3: check_host_in_hostfile: filename /root/.ssh/known_hosts2 → ファイルは存在しません。 debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts2 → ファイルは存在し、サーバーの公開鍵(DSAとRSA両方)書かれています。 → 内容:<server>,<server>.<mydomain>,192.168.1.1 ssh-dss ****... → 内容:<server>,<server>.<mydomain>,192.168.1.1 ssh-rsa ****... debug3: key_read: type mismatch → 1行目(DSA)はミスマッチ? debug3: check_host_in_hostfile: match line 2 → 2行目(RSA)はマッチ? debug3: check_host_in_hostfile: filename /root/.ssh/known_hosts2 debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts2 debug3: key_read: type mismatch debug3: check_host_in_hostfile: match line 2 → 同じことを2回やってる? → それとも、サーバー側がクライアントのマッチングをしてる? debug1: Host '<server>' is known and matches the RSA host key. debug1: Found key in /etc/ssh/ssh_known_hosts2:2 → /etc/ssh/ssh_known_hosts2 の 2行目(RSA)のキーにマッチしたということ? debug2: bits set: 508/1024 debug1: ssh_rsa_verify: signature correct → おお、「正しい署名」と言っている! debug2: kex_derive_keys debug2: set_newkeys: mode 1 debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug2: set_newkeys: mode 0 debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug2: service_accept: ssh-userauth debug1: SSH2_MSG_SERVICE_ACCEPT received debug2: key: /etc/ssh/ssh_host_dsa_key (0x8219650) debug2: key: /etc/ssh/ssh_host_rsa_key (0x8219170) debug1: Authentications that can continue: publickey,keyboard-interactive,hostbased debug3: start over, passed a different list publickey,keyboard-interactive,hostbased debug3: preferred hostbased debug3: authmethod_lookup hostbased debug3: remaining preferred: debug3: authmethod_is_enabled hostbased debug1: Next authentication method: hostbased → ホストベース認証を優先。思惑通り。 debug2: userauth_hostbased: chost <client>.<mydomain>. debug2: we sent a hostbased packet, wait for reply debug1: Authentications that can continue: publickey,keyboard-interactive,hostbased → サーバー側では、公開鍵、対話型、ホストベース認証が可能。 debug2: userauth_hostbased: chost <client>.<mydomain>. debug2: we sent a hostbased packet, wait for reply debug1: Authentications that can continue: publickey,keyboard-interactive,hostbased → リトライ? debug1: No more client hostkeys for hostbased authentication. debug2: we did not send a packet, disable method → クライアントホストキーがない?で、パケットを送らなかったと。 → サーバー側の /etc/ssh/ssh_known_hosts2 → 内容:<cleent>,<cleent>.<mydomain>,192.168.1.3 ssh-dss ****... → 内容:<cleent>,<cleent>.<mydomain>,192.168.1.3 ssh-rsa ****... → サーバー側の /etc/ssh/shosts.equiv → 内容:<cleent> → 内容:<cleent>.<mydomain> → 内容:192.168.1.3 debug1: No more authentication methods to try. Permission denied (publickey,keyboard-interactive,hostbased). → 試みるべき認証方法がないので、無効。ToT ---- 疑問その1:どうしてDSAで認証できないのでしょうか? 疑問その2:どうしてクライアントホストキーがないと言われるのでしょうか? もちろん、クライアントの公開鍵と値は一致しています。 /etc/ssh/ssh_known_hosts2 の書式が間違っているのでしょうか? ---- ホスト 暗号方式 値 ---- そもそもクライアントの認証に使うファイルは /etc/ssh/ssh_known_hosts2 ではないのでしょうか? よろしくお願いいたします。 |
1