- PR -

SSH ホストベース認証でuserauth_hostbased mismatch

1
投稿者投稿内容
Jumpin'' Jack Flash
大ベテラン
会議室デビュー日: 2006/01/24
投稿数: 198
投稿日時: 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 には 様々なホスト名が割り振られているのですが、このエラーを
回避する方法を教えてください。

よろしくお願いいたします。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2006-04-20 01:32
こんばんわ.
引用:

Jumpin' Jack Flashさんの書き込み (2006-04-20 01:02) より:

「クライアントからはntp.<mydomain>(192.168.1.3)で認証しにきたが、
192.168.1.3 を名前解決したら www.<mydomain> だったからミスマッチだよ」
ということでしょうか?


で,実際にはどうなんでしょうか?
引用:

192.168.1.3 には 様々なホスト名が割り振られているのですが、このエラーを
回避する方法を教えてください。


sshd が動いている側での名前解決で,
「192.168.1.3 は ntp.<mydomain> です」と解決できればよろしいのでは?
/etc/hosts の記述で管理できませんか?
Jumpin'' Jack Flash
大ベテラン
会議室デビュー日: 2006/01/24
投稿数: 198
投稿日時: 2006-04-20 01:43
こんばんは。いつもお世話になっております。

引用:

kazさんの書き込み (2006-04-20 01:32) より:
引用:

Jumpin' Jack Flashさんの書き込み (2006-04-20 01:02) より:

「クライアントからはntp.<mydomain>(192.168.1.3)で認証しにきたが、
192.168.1.3 を名前解決したら www.<mydomain> だったからミスマッチだよ」
ということでしょうか?


で,実際にはどうなんでしょうか?



192.168.1.3 には 様々なホスト名が割り振られているので、
逆引きしたらそうなると思います。
実際、wwwのところは、dnsになったりmailになったり、接続を試みる度に
かわります。

引用:

引用:

192.168.1.3 には 様々なホスト名が割り振られているのですが、このエラーを
回避する方法を教えてください。


sshd が動いている側での名前解決で,
「192.168.1.3 は ntp.<mydomain> です」と解決できればよろしいのでは?
/etc/hosts の記述で管理できませんか?



ntpのところも同様にかわります。

DNSを引かないような設定があればよいのですが...
ちょっと文献をあさってみます。
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2006-04-20 02:31
引用:

Jumpin' Jack Flashさんの書き込み (2006-04-20 01:43) より:

192.168.1.3 には 様々なホスト名が割り振られているので、
逆引きしたらそうなると思います。
実際、wwwのところは、dnsになったりmailになったり、接続を試みる度に
かわります。


つまり,逆引きで round robbin しているんでしょうか?
そのような必要があるのですか?
正引きではよくやりますが,逆引きではやるべきではないと思います.
引用:

DNSを引かないような設定があればよいのですが...
ちょっと文献をあさってみます。


引かないと困りませんか?
要するに「/etc/hosts 参照 -> 見当たらないので DNS 参照」
とすればよろしいのでは?
/etc/nsswitch.conf をお調べください.
Jumpin'' Jack Flash
大ベテラン
会議室デビュー日: 2006/01/24
投稿数: 198
投稿日時: 2006-04-20 11:55
コメントありがとうございます。

引用:

kazさんの書き込み (2006-04-20 02:31) より:
要するに「/etc/hosts 参照 -> 見当たらないので DNS 参照」
とすればよろしいのでは?
/etc/nsswitch.conf をお調べください.



お恥ずかしながら、/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

スキルアップ/キャリアアップ(JOB@IT)