LoginSignup
5

More than 5 years have passed since last update.

posted at

updated at

Organization

ubuntuのLDAPでssh鍵を一括管理する時に詰まったこと

Ubuntuでsshの認証しようとした時、結構詰まったのでそのメモ書き

参考
OSバージョン:ubuntu16.04LTS
sshに使うやつ:ssh-ldap-pubkey

とりあえずやりたかったこと

  • 踏み台サーバーからクライアントに対してsshをかける
  • 認証の際にLDAPサーバーの公開鍵を参照してログイン
  • クライアント側には秘密鍵も公開鍵も置かない状態になっていること

やり方

クライアントサーバーに必要なものを一括インストール

サーバー

apt install slapd libnss-ldap libpam-ldap nslcd

クライアント

apt install libnss-ldap libpam-ldap nslcd

パスワードとかは任意のものを使用。

ldap://はLDAPサーバーのIPを入れてます(基本はドメインだと思う)

ついでに初期設定で聞かれるLDAPのドメインとかはそのサーバーのドメインをdc=ドメイン名で設定
例:)
xxx.example.comの場合
dc=example,dc=com見たな感じ

adminの設定もdcはさっき入力したやつを入力

あとはデフォルト値にしたがってはいはいと進めていきます。

sshスキーマを作成してデータベースに入れる

CentOSだとデフォルトでスキーマとか入っているらしいのですが、Ubuntuはその辺適当みたいで、むしろ自分で作れって言われました。

デフォルトだとsshのObjactClassがないみたいなのでldifファイルを作成して食べさせます。

このソースをviでコピペして作成する。
↓これ
openssh-lpk.schema

vi openssh-lpk.ldif

そんで管理者権限でさっき作ったやつをしれっと入れます。

ldapadd -x -W -D cn=admin,dc=example,dc=com -H ldap:/// -f openssh-lpk.ldif

これでスキーマがスコンと入れは成功

ssh-ldap-pubkeyのインストール

あとは最近ssh-ldap-pubkeyなるものが使えるようになったみたいなのでそれをクライアントとサーバー両方にインストール

Pythonで書かれているらしくpipをあらかじめインストールしてから使ってください。

sudo pip install ssh-ldap-pubkey

あと、ライブラリが足りないみたいなのでこれも追加してインストール

sudo apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev

これでssh-ldap-pubkeyが使えるのでログインしたいLDAPユーザーのホームディレクトリに公開鍵と秘密鍵があることを確認したらLDAPデータベースに公開鍵を以下のコマンドで入れます。

ssh-ldap-pubkey add ~/.ssh/id_rsa.pub

admin権限で入れろよと怒られた場合はadminをバインドして入れましょう

ssh-ldap-pubkey add -D cn=admin,dc=example,dc=com -u demouser ~/.ssh/id_rsa.pub

クライアント側のsshdの設定の変更

このままだとクライアント側が普通のsshの認証しかしないので/etc/ssh/sshd_configの設定をviで編集。

vi /etc/ssh.sshd_config

認証する際にssh-ldap-pubkeyを使うように追記します。

その際にはパスワード認証はオフにしておくといいかも

AuthorizedKeysCommand /usr/bin/local/ssh-ldap-pubkey-wrapper
AuthorizedKeysCommandUser nobody

最後にsshdの再起動して反映させれば完了です。

systemctl restart sshd.service

あとはLDAPに公開鍵を登録したユーザーでsshできれば完成

参考URL
ubuntu OpenLDAP
jirutka/ssh-ldap-pubkey
Server world LDAPサーバーの設定

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
5