Edited at

OpenLDAP - SSH公開鍵を登録してログインするまでの手順

More than 3 years have passed since last update.


やりたいこと


  • SSH公開鍵をLDAPに登録して一元管理したいため調査しました。OpenSSHをソースからコンパイルしてとかいろいろ情報がありましたが、Ubuntu 14.04.1 LTSではOpenSSH 6.6.1p1がapt-getで入手できるのでスキーマファイルをダウンロードしてincludeするだけでした。


環境


  • OS:Ubuntu 14.04.1 LTS

  • OpenSSH:6.6.1p1

  • OpenLDAP:2.4.31


LDAPサーバ側の設定


  • まずLDAPサーバでの設定手順


1.OpenLdapサービス停止

sudo su -

service slapd stop


2.スキーマファイルをダウンロード

cd /usr/local/src

wget https://openssh-lpk.googlecode.com/files/openssh-lpk_openldap.schema


3.スキーマディレクトリにコピー

mv openssh-lpk_openldap.schema /etc/ldap/schema


4.slapd.conf編集

vi /etc/ldap/slapd.conf

------------------------------------------------------------
include /etc/ldap/schema/openssh-lpk_openldap.schema
------------------------------------------------------------


5.ConfigDB削除

rm -rf /etc/ldap/slapd.d/*


6.ConfigDB再作成

slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d/

chown -R openldap:openldap /etc/ldap/slapd.d


7.OpenLdapサービス起動

service slapd start


  • これでLDAPのAttributeに「sshPublicKey」が表示され公開鍵が追加できる


LDAPクライアント側の設定


  • sshdがLDAPサーバのSSH公開鍵を取得するようにする設定手順


1.LDAPサーバからSSH公開鍵を取得するスクリプト


  • やっていることはLDAPサーバに接続して「ldapsearch」の結果から公開鍵だけ抽出

vi /opt/ssh-command/LdapGetSSHKey.sh

------------------------------------------------------------
#!/bin/bash

uri=ldap://<LDAP-SERVER>
binddn="<BIND-USER>"
bindpw=<PASSWORD>
base="<BASE>"
uid=$1

ldapsearch -LLL -H ${uri} -w "${bindpw}" -D "${binddn}" -b "${base}" "(& (objectClass=posixAccount) (uid=${uid}))" "sshPublicKey" | sed -ne '2,$p' | sed -e 's/sshPublicKey: //g' | sed -e 's/^ //g' | tr -d '\n'
------------------------------------------------------------


2.sshdに認証コマンドの設定

vi /etc/ssh/sshd_config

------------------------------------------------------------
AuthorizedKeysCommand /opt/ssh-command/LdapGetSSHKey.sh
AuthorizedKeysCommandUser root
------------------------------------------------------------


※参考

http://makaaso.hatenablog.com/entry/2015/12/10/145442