Posted on 20th 4月 2009No Responses
ssh2でホストベース認証

sshのホストベース認証を利用する為には、サーバとクライアントの両方でホストベース認証(HostbasedAuthentication)をyesにし、互いのホストキーを /etc/ssh/ssh_known_hosts2 に追加する(debian/lennyの場合)。また、サーバ側は /etc/hosts.equiv に クライアントを追加し、クライアント側ではEnableSSHKeysign を yes にする。

sshには様々な認証がある。そのなかの一つにホストベース認証がある。ホストベース認証を利用すると、同一ユーザが存在するホスト間で、ユーザの認証を省くことが可能になる。クラスタ等の大量ホスト上に同一のユーザが存在する場合、個々のホストどうしでホストベース認証をしておけば、ユーザ認証をせずにタスクをdispatchできる。

各ユーザは個々のホストでユーザネームが同一である必要があるが、uidは異なっていてもログインできる。

ホストベース認証を利用する為には、サーバとクライアントのどちらにも設定が必要になる。以下はdebian/lenny を使った場合の例である。

クライアント:

  1. 以下を設定をssh_configに追加する。
    HostbasedAuthentication yes
    EnableSSHKeysign yes
  2. サーバのホストキーをimportする。ssh-keyscan を使うと便利。
    # ssh-keyscan server1,server2,.. > /etc/ssh/ssh_known_hosts2

サーバ:

  1. 以下を設定をssh_configに追加する。
    HostbasedAuthentication yes
  2. /etc/hosts.equiv にクライアントのホスト名(またはIP address)を書く。
  3. クライアントのホストキーをimportする。クライアント側でもsshdが動いてる場合は、クライアントの場合と同様に、ssh-keyscan が利用できる。クライアントでssh-server が動いていない場合は、
    1. ホストキーを生成する。ホストキーはssh-keygenで以下の様に生成。既にある場合は新たに作る必要はない。
      # ssh-keygen -N ” -t rsa -f /etc/ssh/ssh_host_rsa_key
    2. ssh_host_rsa_key.pub をサーバにコピーし、ssh_known_hosts2 に追加する。追加時に、クライアントのホスト名(やIP address)をパブリックキーの先頭に追加する。
      # (echo -n client; cat ssh_host_rsa_key.pub) > /etc/ssh/ssh_known_hosts2

クライアント側では、サーバのホストキーを/etc/ssh/ssh_known_hosts2 に保存せずに、個々のユーザの ~/.ssh/known_hosts に動的に保存させることも出来る。この場合、事前にサーバのホストキーを保存する必要はない。

逆に、サーバ側はユーザの known_hosts を無視することも出来る。これはsshd_configでIgnoreUserKnownHostsをyesに設定すれば良い。この設定をした場合は、クライアント側で /etc/ssh/ssh_known_hosts2 が存在しない場合には、ホストベース認証は行われず、別の認証に切り替わる。

references:

  • ssh_config(5)
  • sshd_config(5)
  • hosts_equiv(5)
Comments
Leave a Response
XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
*