Windows kinit kerberos 连接因 ICMP 端口不可达而失败

Windows kinit kerberos 连接因 ICMP 端口不可达而失败

我正在尝试使用 keytab 连接到 kerberos 服务器:

kinit -k -t securitytest.keytab [email protected]

Exception: ICMP Port Unreachable
java.net.PortUnreachableException: ICMP Port Unreachable
        at java.base/java.net.DualStackPlainDatagramSocketImpl.socketReceiveOrPeekData(Native Method)
        at java.base/java.net.DualStackPlainDatagramSocketImpl.receive0(DualStackPlainDatagramSocketImpl.java:124)
        at java.base/java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:181)
        at java.base/java.net.DatagramSocket.receive(DatagramSocket.java:814)
        at java.security.jgss/sun.security.krb5.internal.UDPClient.receive(NetClient.java:205)
        at java.security.jgss/sun.security.krb5.KdcComm$KdcCommunication.run(KdcComm.java:404)
        at java.security.jgss/sun.security.krb5.KdcComm$KdcCommunication.run(KdcComm.java:364)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.security.jgss/sun.security.krb5.KdcComm.send(KdcComm.java:348)
        at java.security.jgss/sun.security.krb5.KdcComm.sendIfPossible(KdcComm.java:253)
        at java.security.jgss/sun.security.krb5.KdcComm.send(KdcComm.java:229)
        at java.security.jgss/sun.security.krb5.KdcComm.send(KdcComm.java:200)
        at java.security.jgss/sun.security.krb5.KrbAsReqBuilder.send(KrbAsReqBuilder.java:326)
        at java.security.jgss/sun.security.krb5.KrbAsReqBuilder.action(KrbAsReqBuilder.java:371)
        at java.security.jgss/sun.security.krb5.internal.tools.Kinit.acquire(Kinit.java:248)
        at java.security.jgss/sun.security.krb5.internal.tools.Kinit.<init>(Kinit.java:134)
        at java.security.jgss/sun.security.krb5.internal.tools.Kinit.main(Kinit.java:96)

现在我确实尝试完全关闭 Windows 防火墙,并在 krb5.ini 中设置 kdc 的端口 88,正如一些人暗示的那样,但这没有帮助。远程登录 kdc 地址的端口有效。从 java 1.8 更新到 1.11,仍然是同样的问题。

如果我使用 kerberos gui 中的主体名称和密码进行连接,它就可以正常工作。使用 tab 文件的 kinit 连接可以在 mac 和 linux 机器上运行。

有没有什么办法可以解决这个问题?

答案1

在windows环境下,kinit.exe也存在于JDK的安装目录中,请确保你使用的kinit.exe位于kerberos的安装目录中。

相关内容