LDAPサーバーをマウントし、ユーザーの証明書を生成し、LDAP(ディレクトリではなく証明書自体)に証明書を保存したいので、公開キーの保存に使用される次のスキームを見つけたので、スキームと対応するパブリックを追加しましたLDAPサーバーへのユーザーのキー。
# octetString SYNTAX
attributetype ( 1.3.6.1.4.1.24552.500.1.1.1.13 NAME 'sshPublicKey'
DESC 'MANDATORY: OpenSSH Public key'
EQUALITY octetStringMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
# printableString SYNTAX yes|no
objectclass ( 1.3.6.1.4.1.24552.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY
DESC 'MANDATORY: OpenSSH LPK objectclass'
MAY ( sshPublicKey $ uid )
)
公開鍵と秘密鍵を使用してサーバーに接続するsshを使用するように研究し、sshにはLDAPサーバーの公開鍵を読み取るために、AuthorizedKeysCommandコマンドと公開鍵を求めてLDAPに渡すスクリプトを必要とすることがわかりました、公開スクリプトldapを探すこのスクリプトが見つかりました
#!/bin/bash
cn=$usuario
server=servus2.inf #Put your server IP
basedn=ou=usuarios,dc=servus2,dc=inf #Put your basedn
port=389
ldapsearch -x -h $server -p $port -b $basedn -s sub"(objectclass=posixAccount)(uid=$cn)" | sed -n '/^ /{H;d};/sshPublicKey:/x;$g;s/\n *//g;s/sshPublicKey: //gp'
それをフォルダー/etc/ssh
に入れて、すべてのユーザーに実行許可を与え、許可マネージャーに書き込みと読み取りを与え、完了したらファイル/etc/ssh/sshd_config
行に追加しました。
AuthorizedKeysCommand /etc/ssh/script.sh
そして、その行がPubkeyAuthentication yes
であることに気づいたので、設定したら、sshサーバーを再起動します。クライアントから、次のようにsshを介してサーバーに接続しようとします。
ssh -i claveprivada [email protected]
しかし、私にパスワードを要求したり、進行中の詳細を表示するために-vvv
オプションを追加したりしても、特定のことは何もわかりません。行AuthorizedKeysCommand
を読んでいないと思います。ログを確認しましたが、その行またはスクリプトに関してエラーが表示されないので、その行を無視していると思います。
私はそれに関する情報を検索しましたが、以前のバージョンにはバグがありました。解決済みかどうかはわかりませんが、Ubuntu 16、OpenSSH 7.1p2のバージョンにアップグレードしましたが、いつものようにうまくいきませんでした。
誰もこの問題を解決する方法を知っていますか?
Sshを使用してログインしようとしている特定のユーザーの公開キーを取得しようとしました。 (その公開鍵はLDAPサーバーに格納されています)。以下の構成は私のために働いた。
/etc/ssh/sshd_config
AuthorizedKeysCommand /usr/bin/auth
AuthorizedKeysCommandUser nobody
そして、入力としてユーザーid(name)を受け取るスクリプトを以下に示します。
cn=$1
server=192.168.57.105 #Put your server IP
basedn=ou=users,dc=myorg,dc=org #Put your basedn
port=389
ldapsearch -x -h $server -p $port -o ldif-wrap=no -b $basedn -s sub "(&(objectClass=posixAccount)(uid=$cn))" | sed -n 's/^[ \t]*sshPublicKey:[ \t]*\(.*\)/\1/p'