CentOS 6.3 に openssh-ldap を導入する
CentOS5 時代に書いた記事 が時代遅れになっていたので、2012年12月現在の最新版 CentOS6.3 で OpenSSH + LDAP による RSA鍵管理についてまとめてみた。
openssh-ldap とは?
openssh-ldap は openssh が導入されている環境に追加することで、LDAPサーバーに格納されている RSA公開鍵を使って SSH にログインできるようになる CentOS6 標準のパッケージ。 CentOS5 では、openssh そのものをサードパーティー製のパッケージに置き換える必要があったことを考えると、 標準でサポートされているのはうれしい限り。
要件と仮定
便宜上、設定等については次の通り仮定する。
LDAP サーバーの設定
LDAP サーバーが LPK(LDAP-Public-Key) に対応していない場合、次の手順で設定する。 設定・対応済の場合は次の手順へ。
CentOS6 の場合
openssh-ldap をインストールし /usr/share/doc/openssh-ldap-5.3p1 以下にインストールされるスキーマを OpenLDAP サーバーで使えるようにする。 具体的には /etc/openldap/slapd.conf に次の行を追加すればOK。
include /usr/share/doc/openssh-ldap-5.3p1/openssh-lpk-openldap.schema
最後に LDAP サーバーを再起動する。
[root@localhost ~]# yum ldap restart
CentOS5 の場合
外部からスキーマを入手して使用する。
[root@localhost ~]# cd /etc/openldap/schema
[root@localhost schema]# wget http://dev.inversepath.com/openssh-lpk/openssh-lpk_openldap.schema
次に /etc/openldap/slapd.conf から読み込むように設定する。
include /etc/openldap/schema/openssh-lpk_openldap.schema
最後に LDAP サーバーを再起動する。
[root@localhost ~]# yum ldap restart
インストール済のパッケージを確認
openssh および openssh-server が導入されていることを確認する。
[user@localhost ~]$ yum list installed | grep openssh
openssh.x86_64 5.3p1-81.el6_3 @updates
openssh-server.x86_64 5.3p1-81.el6_3 @updates
インストールされていない場合は yum を使ってインストールする。
[user@localhost ~]$ sudo yum install openssh-server
openssh-ldap のインストールと設定
yum を使って openssh-ldap をインストールする
[root@localhost ~]# yum install openssh-ldap
次に /etc/ssh/ldap.conf を編集する(存在しない場合は作成する)。
[root@localhost ~]# cat > /etc/ssh/ldap.conf <<__EOF__
uri ldap://ldap.example.jp/
base dc=example,dc=jp
host hostname.example.jp
ssl no
#ssl start_tls
#tls_cacertdir /etc/openldap/cacerts
#tls_cacertfile /etc/pki/tls/certs/ca-bundle.crt
#tls_checkpeer no
__EOF__
[root@localhost ~]# chmod 600 /etc/ssh/ldap.conf
/etc/ssh/ldap.conf の設定が完了すると /usr/libexec/openssh/ssh-ldap-wrapper コマンドを使ってユーザーのRSA鍵が取得できるようになる 下記コマンドを実行し、RSA鍵が返ってくればOK。返ってこない場合は ldap.conf または LDAPサーバー側の設定を見直す。
[root@localhost ~]# /usr/libexec/openssh/ssh-ldap-wrapper username
続いて /etc/ssh/sshd_config に次の2行を追加する。
AuthorizedKeysCommand /usr/libexec/openssh/ssh-ldap-wrapper
AuthorizedKeysCommandRunAs root
もちろん RSAAuthentication および PubkeyAuthentication が yes である必要がある。 設定が間違いないか確認し、sshd を再起動する。
[root@localhost ~]# service sshd restart
sshd を停止中: [ OK ]
sshd を起動中: [ OK ]
試しにRSA鍵を使ってログインしてみて、無事に認証できればOK。