お世話になっております。 チーム word-unknown-tsukuba-otaku です。
ユーザー alice で ssh および su でのログインができない問題について調査いたしました。
まず、サーバー 192.168.13.1
にて /etc/passwd
にレコードが入っているユーザー user では正常に ssh でログインすることができました。このときの /var/log/auth.log
を見てみると、以下のように pam_unix
による認証のハンドリングが発生していることがわかります。
Mar 4 10:33:56 ldap-server sshd[1021]: Accepted publickey for user from 192.168.255.254 port 36332 ssh2: ED25519 [REDACTED]
Mar 4 10:33:56 ldap-server sshd[1021]: pam_unix(sshd:session): session opened for user user(uid=1002) by (uid=0)
Mar 4 10:33:56 ldap-server systemd-logind[421]: New session 45 of user user.
Mar 4 10:33:56 ldap-server systemd: pam_unix(systemd-user:session): session opened for user user(uid=1002) by (uid=0)
一方、同様にユーザー alice
で ssh をしようとすると、以下のようなログが流れていることを確認しました。
Mar 4 10:49:33 ldap-server sshd[1628]: Invalid user alice from 127.0.0.1 port 40304
Mar 4 10:49:34 ldap-server sshd[1628]: pam_unix(sshd:auth): check pass; user unknown
Mar 4 10:49:34 ldap-server sshd[1628]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=127.0.0.1
Mar 4 10:49:34 ldap-server sshd[1628]: pam_ldap: could not open secret file /etc/ldap.secret (No such file or directory)
Mar 4 10:49:34 ldap-server sshd[1628]: pam_ldap: error trying to bind as user "uid=Alice,ou=people,dc=ictsc,dc=net" (Invalid credentials)
Mar 4 10:49:36 ldap-server sshd[1628]: Failed password for invalid user alice from 127.0.0.1 port 40304 ssh2
Mar 4 10:49:47 ldap-server sudo: user : TTY=pts/1 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/tail -f /var/log/auth.log
Mar 4 10:49:47 ldap-server sudo: pam_unix(sudo:session): session opened for user root(uid=0) by user(uid=1002)
Mar 4 10:49:50 ldap-server sshd[1628]: Failed password for invalid user alice from 127.0.0.1 port 40304 ssh2
Mar 4 10:49:53 ldap-server sshd[1628]: pam_unix(sshd:auth): check pass; user unknown
Mar 4 10:49:53 ldap-server sshd[1628]: pam_ldap: error trying to bind as user "uid=Alice,ou=people,dc=ictsc,dc=net" (Invalid credentials)
Mar 4 10:49:55 ldap-server sshd[1628]: Failed password for invalid user alice from 127.0.0.1 port 40304 ssh2
Mar 4 10:49:57 ldap-server sshd[1628]: Connection closed by invalid user alice 127.0.0.1 port 40304 [preauth]
Mar 4 10:49:57 ldap-server sshd[1628]: PAM 1 more authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=127.0.0.1
このことから、ユーザー認証時にまず pam_unix
で認証を試みて、それが失敗した際に pam_ldap
を利用するところまでの設定はできているようですが、pam_ldap
と LDAP サーバーの繋ぎ込みが正常にできていないものと推察されます。
ここで、認証時に認証情報を得るソースを指定するための設定ファイル /etc/nsswitch.conf
を見てみると、passwd
や group
, shadow
, gshadow
の箇所では files systemd
または files
のみだけが指定されていました。
LDAP での認証を行うためにはここに ldap
と追記する必要があります。
具体的には、以下のような差分が生じるように変更を加えます。
--- nsswitch.conf.bak 2023-03-04 11:00:16.966357758 +0900
+++ nsswitch.conf 2023-03-04 10:58:26.041750866 +0900
@@ -4,10 +4,10 @@
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
-passwd: files systemd
-group: files systemd
-shadow: files
-gshadow: files
+passwd: files systemd ldap
+group: files systemd ldap
+shadow: files ldap
+gshadow: files ldap
hosts: files dns myhostname
networks: files
このようにすると、ssh alice@localhost
コマンドでパスワード alice
を入力した際に LDAP サーバーを利用した認証が正常に完了し、ログインができてシェルへのアクセスを得ることができるようになりました。
よろしくお願いいたします。