このリンク を使用して、Active Directoryサーバーに適切に参加しているサーバーをセットアップしましたが、何らかの理由で、作成した複数のテストユーザーでKerberosチケットを使用してそのサーバーを認証できません。私のラップトップで。
ローカルラップトップのすべてのユーザーは同じ.ssh/configを持ち、すべて同じ/etc/krb5.confを使用します。すべてのユーザーは、kinitを使用するだけで、ADから有効なチケットを正常に取得することもできます。ただし、ADに参加している前述のサーバーにSSH接続しようとすると問題が発生します。
自分のアカウント「parkel」でログインしようとすると、パスワードの入力を求められ、ADパスワードを入力すると、サーバーにログインするための認証が取得されます。最初にログインしたときに、ホームディレクトリが正しく作成されました。 ADのgidNumberで設定されたグループに割り当てられました。世界ではすべて大丈夫のようでした。 ADでgidNumberの変更をテストしましたが、すべての変更は再ログ後すぐにアクティブになりました。世界ではまだすべて大丈夫のようでした。
それが問題が始まったときです。成功を確認した後、ADで2つのテストアカウントを作成しました。以前は機能していた自分のADアカウントのコピーである「test1」と「test2」です。私は自分のラップトップでそのアカウントに変更し、kinitを実行してチケットを取得しました。ただし、サーバーにログインしようとすると、パスワードで認証しようとしているだけで、pam_sssを使用して認証しようとしていることはログに記録されません。ローカルユーザーが存在しないため、これは惨めに失敗します。
私は認めるよりもはるかに多くのグーグル検索とドキュメントをチェックしました、しかし私はここで本当に途方に暮れています。私はいくつかの愚かな細部を見落としていると確信していますが、どこが間違っているのか本当にわかりません。
サーバー上のsshdログと、サーバーおよびクライアント上のkrb5.confからの出力が含まれています。
Dec 10 11:59:04 ldaptest.vs.lan sshd[2384]: Authorized to parkel, krb5 principal [email protected] (ssh_gssapi_krb5_cmdok)
Dec 10 11:59:04 ldaptest.vs.lan sshd[2384]: Accepted gssapi-with-mic for parkel from 192.168.100.2 port 56752 ssh2
Dec 10 11:59:04 ldaptest.vs.lan systemd[1]: Created slice user-2001.slice.
Dec 10 11:59:04 ldaptest.vs.lan systemd[1]: Starting Session 3 of user parkel.
Dec 10 11:59:04 ldaptest.vs.lan systemd[1]: Started Session 3 of user parkel.
Dec 10 11:59:04 ldaptest.vs.lan systemd-logind[776]: New session 3 of user parkel.
Dec 10 11:59:04 ldaptest.vs.lan sshd[2384]: pam_unix(sshd:session): session opened for user parkel by (uid=0)
Dec 10 11:59:10 ldaptest.vs.lan sshd[2410]: Invalid user test1 from 192.168.100.2
Dec 10 11:59:10 ldaptest.vs.lan sshd[2410]: input_userauth_request: invalid user test1 [preauth]
[libdefaults]
default_realm = VS.LAN
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = yes
[realms]
VS.LAN = {
kdc = ad01-test.vs.lan:88
admin_server = ad01-test.vs.lan:749
default_domain = vs.lan
}
[appdefaults]
pam = {
debug = true
ticket_lifetime = 36h
renew_lifetime = 36h
forwardable = true
krb4_convert = false
}
[logging]
default = FILE:/var/log/krb5/kdc.log
kdc = FILE:/var/log/krb5/kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
includedir /etc/krb5.conf.d/
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = false
rdns = false
default_realm = VS.LAN
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
VS.LAN = {
kdc = 172.19.254.5
}
[domain_realm]
.vs.local = VS.LAN
vs.local = VS.LAN
[sssd]
domains = vs.lan
services = nss, pam, pac
config_file_version = 2
[nss]
[pam]
[pac]
[domain/vs.lan]
## Comment out if you want offline logins
# cache_credentials = true
ldap_id_mapping = False
default_Shell = /bin/bash
fallback_homedir = /home/%d/%u
id_provider = ad
auth_provider = ad
access_provider = ad
chpass_provider = ad
ldap_schema = ad
dyndns_update = true
dyndns_refresh_interval = 43200
dyndns_update_ptr = true
dyndns_ttl = 3600
ad_server = ad01-test.vs.lan
将来の参照として、このログ行が重要です。
Dec 10 11:59:10 ldaptest.vs.lan sshd[2410]: Invalid user test1 from 192.168.100.2
Sshがユーザーを見つけることさえできることを示しているので、デバッグの次のステップは、sssdログを有効にして、getent passwd test1
が機能しない理由を確認することです。
嬉しいsssdがあなたのために働きます!
最終的に、ユーザー 'test1'のADで正しい値uidNumber、gidNumber、homeDirectory、loginShellを設定することで、問題を解決しました。どうやら私が働いているユーザーをコピーしたとき、これらの値は他のすべての情報と一緒にコピーされなかったようです。