我在 Bash 上使用 Kerberos 并尝试运行 kinit 命令。
我不断收到此错误:
kinit: Unknown credential cache type while getting default ccache
Run Code Online (Sandbox Code Playgroud)
对于我运行的任何其他 Kerberos 命令( 、 等),也会出现此klist
错误kdestroy
。
我已将 KRB5CCNAME 设置为以下值:KEYRING:persistent:{uid}
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
# default_realm = EXAMPLE.COM
default_ccache_name = KEYRING:persistent:%{uid}
Run Code Online (Sandbox Code Playgroud)
有人可以建议如何进一步解决这个问题吗?关于这个特定错误的文档似乎很少。
我正在努力学习"如何在Hadoop中实现Kerberos?" 我曾经使用过此文档不见了 https://issues.apache.org/jira/browse/HADOOP-4487 我还通过基本Kerberos的东西不见了(https://www.youtube.com/watch?v=KD2Q-2ToloE)
在从这些资源中学习之后,我得出了一个结论,我通过图表来表示.场景: - 用户登录到他的计算机通过Kerberos身份验证进行身份验证并提交地图缩减工作(请阅读图表的说明,它几乎不需要5分钟的时间)我想解释图表并提出与几个相关的问题步骤(粗体) 黄色背景中的数字表示整个流程(数字1到19)DT(带红色背景)表示委托令牌BAT(带绿色背景)表示块访问令牌JT(带有棕色背景)表示作业令牌
步骤1,2,3和4表示: - 请求TGT(票证授予票证)请求名称节点的服务票证. 问题1)KDC应该在哪里?它可以在我的名称节点或作业跟踪器所在的机器上吗?
步骤5,6,7,8和9表示: - 显示名称节点的服务票证,获得确认.名称节点将发出委托令牌(红色)用户将告知令牌更新程序(在这种情况下,它是作业跟踪器)
问题2)用户将此授权令牌与作业一起提交给Job Tracker.授权令牌是否会与任务跟踪器共享?
步骤10,11,12,13和14表示: - 询问服务票据以获取作业跟踪器,从KDC获取服务票证将此票证显示给Job Tracker并从JobTracker获取ACK将作业+委派令牌提交给JobTracker.
步骤15,16和17表示: - 生成块访问令牌并分布在所有数据节点上.将blockID和Block Access Token发送到Job Tracker,Job Tracker会将其传递给TaskTracker
问题3)谁将从名称节点请求BlockAccessToken和Block ID?JobTracker或TaskTracker
对不起,我错误地错过了18号.Step19表示: - 作业跟踪器生成作业令牌(棕色)并将其传递给TaskTrackers.
问题4)我可以得出结论,每个用户将有一个代表队令牌,它将分布在整个集群中,每个作业会有一个作业令牌吗?因此,用户将只有一个委托令牌和许多作业令牌(等于他提交的作业数量).
请告诉我,如果我错过了某些内容,或者在我的解释中某些方面我错了.
hadoop kerberos hadoop-plugins kerberos-delegation mit-kerberos
我正在使用 Spring Security Kerberos 使用 Kerberos 身份验证的站点上工作。所以,我们不支持 NTLM。当用户发出未经身份验证的请求时,服务器将回复带有标题 WWW-Authenticate: Negotiate 的 HTTP 401。
问题:对于某些用户/配置,浏览器将发送 NTLM 凭据。服务器不一定在 Windows 上运行,因此它无法处理 NTLM 凭据。
据我了解,“协商”的意思是“如果可能,请向我发送 Kerberos,否则发送 NTLM”。是否有不同的设置说“只向我发送 Kerberos”?或者有什么方法可以告诉浏览器该站点仅支持 Kerberos?
作为后续,为什么浏览器没有 Kerberos 可用?在这种情况下,他们登录到同一个域。也许他们的凭据已过期?
我按照以下步骤设置 KDC 和 kerberos。现在 kinit 面临以下问题。
操作系统-SUSE 11
1. zypper install krb5 krb5-server krb5-client
2. Updated krb5.conf with proper realm details.
3. kdb5_util create -s <kerberos database created. password provided on prompt>
4. echo "*/admin@EMEA.EBS.CORPINTRA.NET" >> /var/lib/kerberos/krb5kdc/kadm5.acl <provided permission to principals>
5. rckrb5kdc restart & then rckadmind restart
6. kadmin.local -q "addprinc admin/admin" <creating principal>
7. kadmin.local -q "list_principals" <verified principals>
8. kinit admin/admin@EMEA.EBS.CORPINTRA.NET <initalise>
9. klist
Create kerberos user:
10. kadmin.local
- addprinc himansu@EMEA.EBS.CORPINTRA.NET
(provide passwrd, when prompted)
11. …
Run Code Online (Sandbox Code Playgroud) 我的集群启用了 kerberos,并且在从 ambari UI 启动 ranger kms 时收到“无密钥可存储”错误:-
**ERROR [/kms] - Exception starting filter authFilter
javax.servlet.ServletException: org.apache.hadoop.security.authentication.client.AuthenticationException: javax.security.auth.login.LoginException: No key to store**
at org.apache.hadoop.security.authentication.server.KerberosAuthenticationHandler.init(KerberosAuthenticationHandler.java:241)
at org.apache.hadoop.security.token.delegation.web.DelegationTokenAuthenticationHandler.init(DelegationTokenAuthenticationHandler.java:117)
at org.apache.hadoop.security.authentication.server.AuthenticationFilter.initializeAuthHandler(AuthenticationFilter.java:248)
at org.apache.hadoop.security.token.delegation.web.DelegationTokenAuthenticationFilter.initializeAuthHandler(DelegationTokenAuthenticationFilter.java:195)
at org.apache.hadoop.security.authentication.server.AuthenticationFilter.init(AuthenticationFilter.java:234)
at org.apache.hadoop.security.token.delegation.web.DelegationTokenAuthenticationFilter.init(DelegationTokenAuthenticationFilter.java:161)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4828)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5508)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.hadoop.security.authentication.client.AuthenticationException: javax.security.auth.login.LoginException: No key to store
at org.apache.hadoop.security.authentication.server.KerberosAuthenticationHandler.init(KerberosAuthenticationHandler.java:225)
... 17 more
Caused by: javax.security.auth.login.LoginException: No key to store
at com.sun.security.auth.module.Krb5LoginModule.commit(Krb5LoginModule.java:1119) …
Run Code Online (Sandbox Code Playgroud) 我试图了解Kerberos的基本概念.我在这里读到了关于这里的原理,通常看起来像:
primary/instance@REALM
Run Code Online (Sandbox Code Playgroud)
我想问一下什么是主要的,实例和领域.当然,上面的页面和互联网上的其他几个地方都有定义,但有人可以举个例子吗?
我的理解是:主要是消费者(用户或服务).实例是用于访问控制的东西.主要可以是多个实例的一部分.Realm是实例的集合?如果我错了,请纠正我.
如果我有一台服务器:foo.bar.com
,我可以拥有2个领域:REALM1,REALM2.这些可以这样命名吗?或者我可以在这里只有1个领域作为FOO.BAR.COM?
现在我说3个服务:s1,s2,s3相互通信.由于启用了kerberos,它们中的每一个都必须拥有一个带有自己的keytab文件的主体?或者由于每个服务都与其他服务进行通信,每个keytab文件是否需要为其他服务都有主体?
我的域上运行着 HTTP 服务。但我对 HTTP 服务的生命周期是如何决定的几乎没有疑问。客户端可以使用我的 HTTP 服务多长时间?
为了能够从 MacBook 访问 Kerberized Hadoop,尝试创建 SPNEGO。在 Centos 7 中从 KDC 复制 spnego keytab 后,执行 kinit 失败,并出现以下错误:
$kinit -kt /etc/security/keytabs/spnego.service.keytab ambari-qa-tcluster@EXAMPLE.COM
kinit: krb5_init_creds_set_keytab: Failed to find ambari-qa-ambari-qa-tcluster@EXAMPLE.COM in keytab FILE:/etc/security/keytabs/smokeuser.headless.keytab (unknown enctype)
Run Code Online (Sandbox Code Playgroud)
在 Centos 上,使用以下命令检查 enctype:
[root@vpimply1 ~]# klist -kte /etc/security/keytabs/smokeuser.headless.keytab
Keytab name: FILE:/etc/security/keytabs/smokeuser.headless.keytab
KVNO Timestamp Principal
---- ------------------- ------------------------------------------------------
2 11/27/2018 21:48:00 ambari-qa-tcluster@EXAMPLE.COM (des-cbc-md5)
2 11/27/2018 21:48:00 ambari-qa-tcluster@EXAMPLE.COM (aes128-cts-hmac-sha1-96)
2 11/27/2018 21:48:00 ambari-qa-tcluster@EXAMPLE.COM (arcfour-hmac)
2 11/27/2018 21:48:00 ambari-qa-tcluster@EXAMPLE.COM (des3-cbc-sha1)
2 11/27/2018 21:48:00 ambari-qa-tcluster@EXAMPLE.COM (aes256-cts-hmac-sha1-96)
[root@vpimply1 ~]#
Run Code Online (Sandbox Code Playgroud)
尝试使用特定的 enctype 创建密钥表,但仍然遇到相同的错误。
如何解决这个“enctype”问题?