質問: ローカルのauthorized_keysを使用したldapユーザーの公開鍵認証 アカウント情報にはldapを使用しています。環境は次のように構成されています... centos 7openldapディレクトリサーバー ディレクトリサーバーを使用するように構成されたcentos7クライアント authconfigは、ldap認証用にcentos7クライアントを構成するために使用されています 私は次のことに気づきました ローカルユーザー(アカウント情報が/ etc/passwdにあるユーザー)は、公開鍵認証を使用せずに(パスワードなしで)クライアント自体にssh接続できます。 ldapユーザーは、パスワードを使用してクライアント自体にssh接続できます ldapユーザーは、公開鍵認証を使用してクライアント自体にssh接続することはできません。ユーザーは適切に構成されたsshキーを持っています(id_rsa.pub、id_rsa)およびローカルユーザーと同様のauthorized_keys ローカルユーザーを使用してsshを実行したときのデバッグ出力は次のとおりです。debug1: offering rsa public key: /home/localuser/.ssh/id_rsa debug3: send_pubkey_test debug2: we sent a publickey packet, wait for reply debug1: server accepts key: pkalg ssh-rsa blen 279 ldapユーザーを使用してsshを実行したときのデバッグ出力は次のとおりです。debug1: offering rsa public key: /home/ldapuser/.ssh/id_rsa debug3: send_pubkey_test debug2: we sent a publickey packet, wait for reply debug1: authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic ldapユーザーが公開鍵認証を使用して接続を試みた後、ログ/ var/log/secureには次のエントリがありますmar 19 16:47:01 localhost sshd[20539]: connection closed by x.x.x.x [preauth] ldapはユーザーアカウントを見つけることができます$ getent passwd ldapuser ldapuser:x:5001:5000::/home/ldapuser:/bin/bash sshが許可する場合passwordauthentication$ ssh test ldapuser@test's password: last failed login: sat mar 19 17:08:29 utc 2016 from x.x.x.x on ssh:notty last login: sat mar 19 15:55:40 2016 openssh-lpkなどの代替手段があることは承知していますが、ldapのメンテナンスを必要としないため、puppetを使用してインストールされたローカルのauthorized_keysを使用できるようにしたいと思います。このアプローチが可能かどうか、可能であれば、sshd、pam、またはldapの構成についてはわかりません。任意のポインタをいただければ幸いです...sshdのログレベルをdebugに設定するというjakujeの提案に続いて、ログには次の手がかりが含まれていました。mar 19 18:22:42 localhost sshd[20934]: debug1: temporarily_use_uid: 5001/5000 (e=0/0) mar 19 18:22:42 localhost sshd[20934]: debug1: trying public key file /home/ldapuser/.ssh/authorized_keys mar 19 18:22:42 localhost sshd[20934]: debug1: could not open authorized keys '/home/ldapuser/.ssh/authorized_keys': permission denied mar 19 18:22:42 localhost sshd[20934]: debug1: restore_uid: 0/0 /および/ homeディレクトリには次の権限があります$ ll -and / /home dr-xr-xr-x. 17 0 0 4096 feb 22 17:26 / drwxr-xr-x. 5 0 0 45 mar 19 03:05 /home / home/ldapuserディレクトリには次の権限があります$ ll -an . drwxr-xr-x. 3 5001 5000 99 mar 19 16:46 . drwxr-xr-x. 5 0 0 45 mar 19 03:05 .. drwx------. 2 5001 5000 76 mar 19 02:45 .ssh /home/ldapuser/.sshディレクトリには次の権限があります$ ll -an . total 16 drwx------. 2 5001 5000 76 mar 19 02:45 . drwxr-xr-x. 3 5001 5000 99 mar 19 16:46 .. -rw-r--r--. 1 5001 5000 419 mar 19 02:45 authorized_keys -rw-------. 1 5001 5000 1679 mar 19 02:45 id_rsa -rw-r--r--. 1 5001 5000 419 mar 19 02:45 id_rsa.pub -rw-r--r--. 1 5001 5000 177 mar 19 02:45 known_hosts sshdデーモンは有効ユーザーを5001/5000に設定しているため、アクセス許可が拒否される理由がわかりません。 rootユーザーはldapuserに切り替えることができるため、システムはユーザーを認識します。ジャクジェ:どうもありがとう! selinuxが問題の原因であり、restoreconを実行すると問題が修正されました。私はあなたの助けと忍耐に感謝します!
回答: ldapユーザーのホームディレクトリは、ユーザーのldapuidが所有している必要があります。 ldapユーザーのホーム内の.sshディレクトリ、および.sshディレクトリ内の公開鍵(authorized_keys)と同じです。例:mkdir -p /home/ldapuser/.ssh cp authorized_keys /home/ldapuser/.ssh getent passwd ... kibosh:*:6035:100:kibosh:/home/kibosh:/bin/bash ldapuser:*:6036:100:ldapuser:/home/ldapuser:/bin/bash chmod -r 6036:users /home/ldapuser ls -l /home drwxr-xr-x 4 ldapuser users 4096 nov 2 10:40 ldapuser ... 注:gid 100は、システム上のローカルグループユーザーのgidです。また、$ home /.sshや$ home/.ssh/authorized_keysなどの権限が正しいことを確認してください。