web-dev-qa-db-ja.com

ssh ldap AuthorizedKeysCommand

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のバージョンにアップグレードしましたが、いつものようにうまくいきませんでした。

誰もこの問題を解決する方法を知っていますか?

2
noelia cg

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'
1
Dilan Gallage