HP-UX General
1819807 メンバー
3044 オンライン
109607 解決策
新規ポスト

SecureShell hostbased認証について

 
Y_H
時折のアドバイザー

SecureShell hostbased認証について

他ホストからのSSH接続を、限定されたホストのみから、パスワードなしで可能とするため、ホストベース認証でのSSH環境を構築しようとしています。

設定を行い、クライアントから接続を試みた際、syslog に下記のようなメッセージが出力されてしまいます。(ホストベース認証に失敗しているようです。)

userauth_hostbased mismatch:

client sends , but we resolve to

は、 のIPアドレスで、2つとも同じものが出力されています。

メッセージを見る限り、サーバ側でクライアントのIPアドレスを逆引きしたが、逆引きできず(同じIPアドレスが返ってきて)クライアントのと一致しないと言っているようです。

DNSは使用しておらず、hostsのみで名前解決を行っています。nsswitch.conf や、hostsの修正等行ってみましたが状況は変わらないようです。

この様な状況に会われた事がある方、また解決方法等ご存知の方がいらっしゃたら、ご教示下さい。

問題となっているのは、HP-UX 11.31、SecureShell 4.50の環境ですが、HP-UX 11.23、SecureShell 4.70の環境でも同様の事象が起きることを確認しています。
10件の返信10
st
頻繁なアドバイザー

SecureShell hostbased認証について

ホストベース認証は設定したことはないのですが、試しに sshd_config 中で

UseDNS no

を設定してみてはいかがですか?sshd_config(5) によると、default で yes になっているとあります。

あとは sshd 起動時のオプションとして -d を指定し、出力内容を調べてみてはいかがですか?
Y_H
時折のアドバイザー

SecureShell hostbased認証について

返信ありがとうございます。

> UseDNS no

これは確かにそれっぽくて気になったのですが、変えても状況に変化ありませんでした。。

sshd -ddd で出力確認もしているのですが、sshdがどこからホスト名を引いてきているかまでは確認できないようです。
st
頻繁なアドバイザー

SecureShell hostbased認証について

Google すると、UseDNS は目的が異なるようですね。それでは、sshd -u0 を試してみませんか?
Y_H
時折のアドバイザー

SecureShell hostbased認証について

sshd -u0 ですよね。

「-u0はDNS要求をおこなわないようにするのにも使うことができます。」なんて書いてありますね。

早速試してみたのですが、状況は変わりませんでした。nslookup では、ちゃんとhostsから引いてくれているんですけどね…。

st
頻繁なアドバイザー

SecureShell hostbased認証について

以下のページに設定方法があります。

http://docs.hp.com/en/5991-7493/ch04s06.html

実際に設定された方法を確認させてください。この設定手順では FQDN を使っていますが、hayashi さんはどうされたのでしょうか?
Y_H
時折のアドバイザー

SecureShell hostbased認証について

http://docs.hp.com/en/5991-7493/ch04s06.html

にあるように、HostbasedAuthentication等の設定は行っていますが、今回DNSを使わないため、FQDNではなく、ホスト名のみで記述しています。

DNSが使える環境でも試してみましたが、状況は変わらないようですね。。
st
頻繁なアドバイザー

SecureShell hostbased認証について

前述しましたマニュアルページに従って検証しました。DNS 環境で 11.23 から 11.31 へのホストベース認証はうまくいきました。



- Client (11.23): A.04.50.010

Server (11.31): A.04.50.011

- root ユーザーではなく私個人のユーザー ID

- SSH-2 を使用

一部を除き、基本的にマニュアルに従う

1. (Client)

HostbasedAuthentication yes -> ssh_config

2. (Client)

EnableSSHKeysign yes -> ssh_config

3. (Server)

HostbasedAuthentication yes -> sshd_config

マニュアルはタイポですね。Based ではなく、based

4. (Server)

実施せず

5. (Client)

# cat /opt/ssh/etc/ssh_host_dsa_key.pub │

ssh root@server.test.jp 'cat >> /opt/ssh/etc/ssh_known_hosts'

6. (Server)

clinet.test.jp -> ssh_known_hosts の先頭に追加

"ssh-dss ssh-dss" とあるが、"ssh-dss" の 1 回が正しいのでは?

ちなみに、2 回繰り返しても、結果は同じでした

7. (Server)

# /sbin/init.d/secsh stop

# /sbin/init.d/secsh start

8. (Server)

私の $HOME/.shosts に以下を追加

client.test.jp myself

9. (Client)

% ssh server.test.jp ls

The authenticity of host 'server.test.jp (xx.xx.xx.xx)' can't be established.

RSA key fingerprint is 0e:0c:8a:2c:2d:94:03:92:c1:6d:b3:12:a7:f6:06:99.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added 'server.test.jp,xx.xx.xx.xx' (RSA) to the list of known hosts.

fileA

fileB

..(略)..

10. (Client)

% ssh server.test.jp date

Fri Feb 22 13:24:55 JST 2008

%

ご参考になれば幸いです。
st
頻繁なアドバイザー

SecureShell hostbased認証について

先週の返信で忘れていたので、補足しておきます。

Server 側である 11.31 の syslog.log には以下のメッセージが残っております。ssh を 2 回実施したので、2 回のログがあります。

Feb 22 12:54:57 server1131 sshd: Accepted hostbased for myself from xx.xx.xx.xx port 61023 ssh2

Feb 22 12:55:00 server1131 sshd: Accepted hostbased for myself from xx.xx.xx.xx port 61029 ssh2

xx.xx.xx.xx は 11.23 の Client サーバーの IP Address です。
Y_H
時折のアドバイザー

SecureShell hostbased認証について

試してみて頂いてありがとうございます。

こちらももう一度改めて環境を作り直してみたところ、最初のsyslogメッセージであった、IP逆引きでちゃんとホスト名が取れるようになっていたようです。(sshd -ddd で確認)

どうやら、原因は "UseDNS" だったっぽいのですが、動きだけ見ているとUseDNSを"no"にしてしまうとDNSどころか、hostsまで見に行かなくなってしまうように見えます。(最初にUseDNSでうまく行かなかったのは、他の設定がおかしかったせい??)

真相は、もう少し追ってみるつもりです。

ソースを見てみると、逆引きをしている

get_canonical_hostname

関数が怪しいのですが。。。
st
頻繁なアドバイザー

SecureShell hostbased認証について

get_remote_hostname() を見た方がよさそうでは?

結局のところ、UseDNS yes のデフォルト設定では、接続クライアントの IP アドレスと、そのアドレスを元に逆引きホスト名から IP アドレスを調べ直し、これら 2 つのアドレスが同一になるかどうかを確認しているようです。

一方、UseDNS no にすると、逆引きの確認が実行されなくなるようです。