我尝试使用kerberos登录ZK,然后执行一些操作。 但是,以下不起作用:
2016-02-19 16:31:32,572 [myid:] - INFO [Thread-1:Login@397] -Initiating re-login for <me/hostname@EXAMPLE.COM>
2016-02-19 16:31:32,588 [myid:] - INFO [Thread-1:Login@301] - TGT valid starting at: Fri Feb 19 16:31:32 PST 2016
2016-02-19 16:31:32,588 [myid:] - INFO [Thread-1:Login@302] - TGT expires: Fri Feb 19 16:46:32 PST 2016
2016-02-19 16:31:32,588 [myid:] - INFO [Thread-1:Login$1@181] - TGT refresh sleeping until: Fri Feb 19 16:43:50 PST 2016
[zk: hostname(CONNECTED) 11]
[zk: hostname(CONNECTED) 11] getAcl /zk-test
'sasl,'me/hostname@EXAMPLE.COM@: cdrwa
[zk: hostname(CONNECTED) 12] ls /zk-test
Authentication is not valid : /zk-test
即使我已经使用主体me/hostname@EXAMPLE.COM
登录,/zk-test
的ACL为sasl:me/hostname@EXAMPLE.COM:cdrwa
,我仍然无法执行ls /zk-test
之类的简单操作。谁知道为什么?感谢。
答案 0 :(得分:1)
我浪费了一生的时间(感谢文件管理员的文件很差 - 一切都很分散),我想确保没有其他人这样做,谢天谢地知道我们工作场所的一切事情帮助了我;)
在你开始zkCli -server blahblah:2181
之前这样做
export JVMFLAGS="-Djava.security.auth.login.config=/tmp/jaas.conf -Dsun.net.spi.nameservice.provider.1=dns,sun"
确保你在tmp文件夹中有jaas conf - 我使用过这样的东西 -
Server {
org.apache.zookeeper.server.auth.DigestLoginModule required
user_super="adminsecret"
user_bob="bobsecret"
user_dev="devpassword";
};
Client{
org.apache.zookeeper.server.auth.DigestLoginModule required
username="blah"
password="blahblah";
};
它现在可以使用了。
答案 1 :(得分:0)
需要jaas.conf文件:
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/myUser/myUser.keytab"
storeKey=true
useTicketCache=false
principal="myUser@MYREALM.COM";
};
为您当前的会话设置环境变量:
export JVMFLAGS="-Djava.security.auth.login.config=/home/myUser/jaas.conf"
最后连接到服务器:
zookeeper-client -server myServerIp
我写了blog pos t关于这个作为对自己的说明应该更完整。