kinit manual

Name

kinit - obtain and cache Kerberos ticket-granting ticket

Synopsis

kinit

[-V] [-llifetime] [-sstart_time] [-rrenewable_life] [-p|-P] [-f|-F] [-a] [-A] [-C] [-E] [-v] [-R] [-k[-tkeytab_file]] [-ccache_name] [-n] [-Sservice_name][-Tarmor_ccache] [-Xattribute[=value]] [principal]

Description

kinitobtains and caches an initial ticket-granting ticket forprincipal.

Options

-V

display verbose output.

-llifetime requests a ticket with the lifetimelifetime. The value forlifetimemust be followed immediately by one of the following delimiters:
   s  seconds
   m  minutes
   h  hours
   d  days
as in "kinit -l 90m". You cannot mix units; a value of '3h30m' will result in an error.

If the-loption is not specified, the default ticket lifetime (configured by each site) is used. Specifying a ticket lifetime longer than the maximum ticket lifetime (configured by each site) results in a ticket with the maximum lifetime.

-sstart_time requests a postdated ticket, valid starting atstart_time. Postdated tickets are issued with theinvalidflag set, and need to be fed back to the kdc before use. -rrenewable_life requests renewable tickets, with a total lifetime ofrenewable_life. The duration is in the same format as the-loption, with the same delimiters. -f

request forwardable tickets.

-F

do not request forwardable tickets.

-p

request proxiable tickets.

-P

do not request proxiable tickets.

-a

request tickets with the local address[es].

-A

request address-less tickets.

-C

requests canonicalization of the principal name.

-E

treats the principal name as an enterprise name.

-v

requests that the ticket granting ticket in the cache (with theinvalidflag set) be passed to the kdc for validation. If the ticket is within its requested time range, the cache is replaced with the validated ticket.

-R

requests renewal of the ticket-granting ticket. Note that an expired ticket cannot be renewed, even if the ticket is still within its renewable life.

-k[-tkeytab_file] requests a ticket, obtained from a key in the local host'skeytabfile. The name and location of the keytab file may be specified with the-tkeytab_fileoption; otherwise the default name and location will be used. By default a host ticket is requested but any principal may be specified. On a KDC, the special keytab locationKDB:can be used to indicate that kinit should open the KDC database and look up the key directly. This permits an administrator to obtain tickets as any principal that supports password-based authentication. -n

Requests anonymous processing. Two types of anonymous principals are supported. For fully anonymous Kerberos, configure pkinit on the KDC and configurepkinit_anchorsin the client's krb5.conf. Then use the-noption with a principal of the form@REALM(an empty principal name followed by the at-sign and a realm name). If permitted by the KDC, an anonymous ticket will be returned. A second form of anonymous tickets is supported; these realm-exposed tickets hide the identity of the client but not the client's realm. For this mode, usekinit -nwith a normal principal name. If supported by the KDC, the principal (but not realm) will be replaced by the anonymous principal. As of release 1.8, the MIT Kerberos KDC only supports fully anonymous operation.

-Tarmor_ccache Specifies the name of a credential cache that already contains a ticket. If supported by the KDC, This ccache will be used to armor the request so that an attacker would have to know both the key of the armor ticket and the key of the principal used for authentication in order to attack the request. Armoring also makes sure that the response from the KDC is not modified in transit. -ccache_name usecache_nameas the Kerberos 5 credentials (ticket) cache name and location; if this option is not used, the default cache name and location are used.

The default credentials cache may vary between systems. If theKRB5CCNAMEenvironment variable is set, its value is used to name the default ticket cache. If a principal name is specified and the type of the default credentials cache supports a collection (such as the DIR type), an existing cache containing credentials for the principal is selected or a new one is created and becomes the new primary cache. Otherwise, any existing contents of the default cache are destroyed bykinit.

-Sservice_name specify an alternate service name to use when getting initial tickets. -Xattribute[=value] specify a pre-authentication attribute and value to be passed to pre-authentication plugins. The acceptableattributeandvaluevalues vary from pre-authentication plugin to plugin. This option may be specified multiple times to specify multiple attributes. If novalueis specified, it is assumed to be "yes".
The following attributes are recognized by the OpenSSL pkinit
pre-authentication mechanism:
   X509_user_identity=value
      specify where to find user's X509 identity information
   X509_anchors=value
      specify where to find trusted X509 anchor information
   flag_RSA_PROTOCOL[=yes]
      specify use of RSA, rather than the default Diffie-Hellman protocol

Environment

Kinituses the following environment variables:

KRB5CCNAME

Location of the default Kerberos 5 credentials (ticket) cache, in the formtype:residual. If no type prefix is present, theFILEtype is assumed. The type of the default cache may determine the availability of a cache collection; for instance, a default cache of typeDIRcauses caches within the directory to be present in the collection.

Files

/tmp/krb5cc_[uid]

default location of Kerberos 5 credentials cache ([uid] is the decimal UID of the user).

/etc/krb5.keytab

default location for the local host'skeytabfile.

2025-11-05 15:19:23.442 [main] INFO o.w.a.web.api.WebApiApplication - Starting WebApiApplication using Java 17.0.16 with PID 24352 (D:\world_aquatics_0922\world-aquatics-api\world-aquatics-web-api\target\classes started by LZY in D:\world_aquatics_0922) 2025-11-05 15:19:23.444 [main] INFO o.w.a.web.api.WebApiApplication - No active profile set, falling back to 1 default profile: "default" 2025-11-05 15:19:25.147 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode 2025-11-05 15:19:25.149 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Elasticsearch repositories in DEFAULT mode. 2025-11-05 15:19:25.166 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 13 ms. Found 0 Elasticsearch repository interfaces. 2025-11-05 15:19:25.171 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode 2025-11-05 15:19:25.171 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Reactive Elasticsearch repositories in DEFAULT mode. 2025-11-05 15:19:25.173 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 1 ms. Found 0 Reactive Elasticsearch repository interfaces. 2025-11-05 15:19:25.183 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Multiple Spring Data modules found, entering strict repository configuration mode 2025-11-05 15:19:25.184 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data Redis repositories in DEFAULT mode. 2025-11-05 15:19:25.192 [main] INFO o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 1 ms. Found 0 Redis repository interfaces. 2025-11-05 15:19:25.879 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port 8081 (http) 2025-11-05 15:19:25.891 [main] INFO o.a.catalina.core.StandardService - Starting service [Tomcat] 2025-11-05 15:19:25.891 [main] INFO o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.16] 2025-11-05 15:19:25.960 [main] INFO o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext 2025-11-05 15:19:25.960 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext - Root WebApplicationContext: initialization completed in 2480 ms 2025-11-05 15:19:25.981 [main] DEBUG o.s.c.e.PropertySourcesPropertyResolver - Found key 'jwt.secret' in PropertySource 'environmentProperties' with value of type String 2025-11-05 15:19:25.982 [main] DEBUG o.s.c.e.PropertySourcesPropertyResolver - Found key 'jwt.expire' in PropertySource 'environmentProperties' with value of type String Logging initialized using 'class org.apache.ibatis.logging.stdout.StdOutImpl' adapter. Can not find table primary key in Class: "org.world.aquatics.common.domain.SysRoleMenuTbl". 2025-11-05 15:19:26.770 [main] WARN c.b.m.c.injector.DefaultSqlInjector - class org.world.aquatics.common.domain.SysRoleMenuTbl ,Not found @TableId annotation, Cannot use Mybatis-Plus 'xxById' Method. Can not find table primary key in Class: "org.world.aquatics.common.domain.SysUserRoleTbl". 2025-11-05 15:19:26.800 [main] WARN c.b.m.c.injector.DefaultSqlInjector - class org.world.aquatics.common.domain.SysUserRoleTbl ,Not found @TableId annotation, Cannot use Mybatis-Plus 'xxById' Method. Initialization Sequence datacenterId:11 workerId:14 _ _ |_ _ _|_. ___ _ | _ | | |\/|_)(_| | |_\ |_)||_|_\ / | 3.5.5 2025-11-05 15:19:27.193 [main] INFO o.w.a.s.config.ElasticsearchConfig - Elasticsearch 配置加载: host={172.18.56.53}, port={9201} 2025-11-05 15:19:27.520 [main] DEBUG o.s.c.e.PropertySourcesPropertyResolver - Found key 'spring.kafka.bootstrap-servers' in PropertySource 'environmentProperties' with value of type String 2025-11-05 15:19:27.521 [main] DEBUG o.s.c.e.PropertySourcesPropertyResolver - Found key 'spring.kafka.consumer.group-id' in PropertySource 'environmentProperties' with value of type String 2025-11-05 15:19:27.786 [main] DEBUG o.s.c.e.PropertySourcesPropertyResolver - Found key 'springdoc.api-docs.path' in PropertySource 'environmentProperties' with value of type String 2025-11-05 15:19:27.786 [main] DEBUG o.s.c.e.PropertySourcesPropertyResolver - Found key 'springdoc.api-docs.path' in PropertySource 'environmentProperties' with value of type String 2025-11-05 15:19:27.789 [main] DEBUG o.s.c.e.PropertySourcesPropertyResolver - Found key 'springdoc.api-docs.path' in PropertySource 'environmentProperties' with value of type String 2025-11-05 15:19:27.790 [main] DEBUG o.s.c.e.PropertySourcesPropertyResolver - Found key 'springdoc.api-docs.path' in PropertySource 'environmentProperties' with value of type String 2025-11-05 15:19:27.791 [main] DEBUG o.s.c.e.PropertySourcesPropertyResolver - Found key 'springdoc.swagger-ui.path' in PropertySource 'environmentProperties' with value of type String 2025-11-05 15:19:27.791 [main] DEBUG o.s.c.e.PropertySourcesPropertyResolver - Found key 'springdoc.swagger-ui.path' in PropertySource 'environmentProperties' with value of type String 2025-11-05 15:19:27.791 [main] DEBUG o.s.c.e.PropertySourcesPropertyResolver - Found key 'springdoc.api-docs.path' in PropertySource 'environmentProperties' with value of type String 2025-11-05 15:19:27.902 [main] INFO o.s.s.web.DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@476a2819, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@279ab15e, org.springframework.security.web.context.SecurityContextHolderFilter@3bbc47c9, org.springframework.security.web.header.HeaderWriterFilter@62a81453, org.springframework.web.filter.CorsFilter@571c2ed8, org.springframework.security.web.authentication.logout.LogoutFilter@188ae8d2, org.world.aquatics.web.api.sso.JwtRequestFilter@2055833f, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@144dc2f7, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@403cff1c, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@5810772a, org.springframework.security.web.session.SessionManagementFilter@690677de, org.springframework.security.web.access.ExceptionTranslationFilter@102aa5fc, org.springframework.security.web.access.intercept.AuthorizationFilter@eddc9bb] 2025-11-05 15:19:28.324 [main] INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port 8081 (http) with context path '' 2025-11-05 15:19:28.363 [main] INFO o.a.k.c.consumer.ConsumerConfig - ConsumerConfig values: allow.auto.create.topics = true auto.commit.interval.ms = 5000 auto.include.jmx.reporter = true auto.offset.reset = earliest bootstrap.servers = [172.18.56.53:9092] check.crcs = true client.dns.lookup = use_all_dns_ips client.id = consumer-world-aquatics-group-1 client.rack = connections.max.idle.ms = 540000 default.api.timeout.ms = 60000 enable.auto.commit = false exclude.internal.topics = true fetch.max.bytes = 52428800 fetch.max.wait.ms = 500 fetch.min.bytes = 1 group.id = world-aquatics-group group.instance.id = null heartbeat.interval.ms = 3000 interceptor.classes = [] internal.leave.group.on.close = true internal.throw.on.fetch.stable.offset.unsupported = false isolation.level = read_uncommitted key.deserializer = class org.apache.kafka.common.serialization.StringDeserializer max.partition.fetch.bytes = 1048576 max.poll.interval.ms = 300000 max.poll.records = 500 metadata.max.age.ms = 300000 metric.reporters = [] metrics.num.samples = 2 metrics.recording.level = INFO metrics.sample.window.ms = 30000 partition.assignment.strategy = [class org.apache.kafka.clients.consumer.RangeAssignor, class org.apache.kafka.clients.consumer.CooperativeStickyAssignor] receive.buffer.bytes = 65536 reconnect.backoff.max.ms = 1000 reconnect.backoff.ms = 50 request.timeout.ms = 30000 retry.backoff.ms = 100 sasl.client.callback.handler.class = null sasl.jaas.config = null sasl.kerberos.kinit.cmd = /usr/bin/kinit sasl.kerberos.min.time.before.relogin = 60000 sasl.kerberos.service.name = null sasl.kerberos.ticket.renew.jitter = 0.05 sasl.kerberos.ticket.renew.window.factor = 0.8 sasl.login.callback.handler.class = null sasl.login.class = null sasl.login.connect.timeout.ms = null sasl.login.read.timeout.ms = null sasl.login.refresh.buffer.seconds = 300 sasl.login.refresh.min.period.seconds = 60 sasl.login.refresh.window.factor = 0.8 sasl.login.refresh.window.jitter = 0.05 sasl.login.retry.backoff.max.ms = 10000 sasl.login.retry.backoff.ms = 100 sasl.mechanism = GSSAPI sasl.oauthbearer.clock.skew.seconds = 30 sasl.oauthbearer.expected.audience = null sasl.oauthbearer.expected.issuer = null sasl.oauthbearer.jwks.endpoint.refresh.ms = 3600000 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms = 10000 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms = 100 sasl.oauthbearer.jwks.endpoint.url = null sasl.oauthbearer.scope.claim.name = scope sasl.oauthbearer.sub.claim.name = sub sasl.oauthbearer.token.endpoint.url = null security.protocol = PLAINTEXT security.providers = null send.buffer.bytes = 131072 session.timeout.ms = 45000 socket.connection.setup.timeout.max.ms = 30000 socket.connection.setup.timeout.ms = 10000 ssl.cipher.suites = null ssl.enabled.protocols = [TLSv1.2, TLSv1.3] ssl.endpoint.identification.algorithm = https ssl.engine.factory.class = null ssl.key.password = null ssl.keymanager.algorithm = SunX509 ssl.keystore.certificate.chain = null ssl.keystore.key = null ssl.keystore.location = null ssl.keystore.password = null ssl.keystore.type = JKS ssl.protocol = TLSv1.3 ssl.provider = null ssl.secure.random.implementation = null ssl.trustmanager.algorithm = PKIX ssl.truststore.certificates = null ssl.truststore.location = null ssl.truststore.password = null ssl.truststore.type = JKS value.deserializer = class org.apache.kafka.common.serialization.StringDeserializer 2025-11-05 15:19:28.445 [main] INFO o.a.kafka.common.utils.AppInfoParser - Kafka version: 3.6.0 2025-11-05 15:19:28.446 [main] INFO o.a.kafka.common.utils.AppInfoParser - Kafka commitId: 60e845626d8a465a 2025-11-05 15:19:28.446 [main] INFO o.a.kafka.common.utils.AppInfoParser - Kafka startTimeMs: 1762327168444 2025-11-05 15:19:28.448 [main] INFO o.s.k.c.DefaultKafkaConsumerFactory$ExtendedKafkaConsumer - [Consumer clientId=consumer-world-aquatics-group-1, groupId=world-aquatics-group] Subscribed to topic(s): world-aquatics-topic 2025-11-05 15:19:28.462 [main] INFO o.w.a.web.api.WebApiApplication - Started WebApiApplication in 5.359 seconds (process running for 7.57) === Config File Loading Information === Active profiles: [] Default profiles: [default] 2025-11-05 15:19:28.464 [main] INFO o.w.a.web.api.WebApiApplication - WebApiApplication启动成功! 2025-11-05 15:19:28.857 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] INFO org.apache.kafka.clients.Metadata - [Consumer clientId=consumer-world-aquatics-group-1, groupId=world-aquatics-group] Cluster ID: seNzt9cQRVW5qmRcTDdWIw 2025-11-05 15:19:28.858 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] INFO o.a.k.c.c.i.ConsumerCoordinator - [Consumer clientId=consumer-world-aquatics-group-1, groupId=world-aquatics-group] Discovered group coordinator 172.18.56.53:9092 (id: 2147483646 rack: null) 2025-11-05 15:19:28.859 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] INFO o.a.k.c.c.i.ConsumerCoordinator - [Consumer clientId=consumer-world-aquatics-group-1, groupId=world-aquatics-group] (Re-)joining group 2025-11-05 15:19:28.872 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] INFO o.a.k.c.c.i.ConsumerCoordinator - [Consumer clientId=consumer-world-aquatics-group-1, groupId=world-aquatics-group] Request joining group due to: need to re-join with the given member-id: consumer-world-aquatics-group-1-3cdba838-80cb-4630-9f17-37c5002ee331 2025-11-05 15:19:28.873 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] INFO o.a.k.c.c.i.ConsumerCoordinator - [Consumer clientId=consumer-world-aquatics-group-1, groupId=world-aquatics-group] Request joining group due to: rebalance failed due to 'The group member needs to have a valid member id before actually entering a consumer group.' (MemberIdRequiredException) 2025-11-05 15:19:28.873 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] INFO o.a.k.c.c.i.ConsumerCoordinator - [Consumer clientId=consumer-world-aquatics-group-1, groupId=world-aquatics-group] (Re-)joining group 2025-11-05 15:19:31.882 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] INFO o.a.k.c.c.i.ConsumerCoordinator - [Consumer clientId=consumer-world-aquatics-group-1, groupId=world-aquatics-group] Successfully joined group with generation Generation{generationId=1, memberId='consumer-world-aquatics-group-1-3cdba838-80cb-4630-9f17-37c5002ee331', protocol='range'} 2025-11-05 15:19:31.887 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] INFO o.a.k.c.c.i.ConsumerCoordinator - [Consumer clientId=consumer-world-aquatics-group-1, groupId=world-aquatics-group] Finished assignment for group at generation 1: {consumer-world-aquatics-group-1-3cdba838-80cb-4630-9f17-37c5002ee331=Assignment(partitions=[world-aquatics-topic-0])} 2025-11-05 15:19:31.901 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] INFO o.a.k.c.c.i.ConsumerCoordinator - [Consumer clientId=consumer-world-aquatics-group-1, groupId=world-aquatics-group] Successfully synced group in generation Generation{generationId=1, memberId='consumer-world-aquatics-group-1-3cdba838-80cb-4630-9f17-37c5002ee331', protocol='range'} 2025-11-05 15:19:31.901 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] INFO o.a.k.c.c.i.ConsumerCoordinator - [Consumer clientId=consumer-world-aquatics-group-1, groupId=world-aquatics-group] Notifying assignor about the new Assignment(partitions=[world-aquatics-topic-0]) 2025-11-05 15:19:31.902 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] INFO o.a.k.c.c.i.ConsumerCoordinator - [Consumer clientId=consumer-world-aquatics-group-1, groupId=world-aquatics-group] Adding newly assigned partitions: world-aquatics-topic-0 2025-11-05 15:19:31.910 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] INFO o.a.k.c.c.i.ConsumerCoordinator - [Consumer clientId=consumer-world-aquatics-group-1, groupId=world-aquatics-group] Found no committed offset for partition world-aquatics-topic-0 2025-11-05 15:19:31.918 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] INFO o.a.k.c.c.i.SubscriptionState - [Consumer clientId=consumer-world-aquatics-group-1, groupId=world-aquatics-group] Resetting offset for partition world-aquatics-topic-0 to position FetchPosition{offset=0, offsetEpoch=Optional.empty, currentLeader=LeaderAndEpoch{leader=Optional[172.18.56.53:9092 (id: 1 rack: null)], epoch=0}}. 2025-11-05 15:19:31.919 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] INFO o.s.k.l.KafkaMessageListenerContainer - world-aquatics-group: partitions assigned: [world-aquatics-topic-0] 这一段日志输出表明了什么问题?需要怎么去解决这个问题?
最新发布
11-06
### `kinit` 命令的使用方法和常见问题 #### 使用方法 `kinit` 命令用于获取 Kerberos 凭证(票据),以便在系统中进行身份验证。其基本语法为: ```bash kinit [principal] ``` 其中,`principal` 是 Kerberos 用户主体,通常格式为 `username@REALM`。例如: ```bash kinit user@example.com ``` 执行该命令后,系统会提示用户输入密码。输入正确的密码后,Kerberos 客户端将向 Key Distribution Center (KDC) 请求 Ticket Granting Ticket (TGT),并将其存储在本地票据缓存中[^1]。 #### 常见问题 ##### 1. **无法获取 TGT** 当用户输入错误的用户名或密码时,`kinit` 会返回认证失败的错误信息。例如: ``` kinit: Password incorrect while getting initial credentials ``` 这种情况应检查用户名、域(REALM)以及密码是否正确,确保网络连接正常,并确认 KDC 服务是否可用。 ##### 2. **票据缓存路径问题** 默认情况下,Kerberos 票据存储在本地缓存中,例如 `/tmp/krb5cc_uid`。如果用户需要指定自定义缓存路径,可以使用 `-c` 选项: ```bash kinit -c /path/to/cache user@example.com ``` 若未正确设置缓存路径,可能导致后续服务无法读取票据,进而引发认证失败的问题。 ##### 3. **使用 Keytab 文件自动认证** 在某些场景中(如服务启动时),用户可以通过 Keytab 文件进行无交互认证。Keytab 文件包含 Kerberos 主体的加密密钥,可使用如下命令: ```bash kinit -kt /path/to/keytab user@example.com ``` 这种方式适用于自动化脚本或后台服务,避免手动输入密码[^2]。 若 Keytab 文件中包含多个主体,应确保指定的主体与文件中的某一项匹配,否则认证将失败。 ##### 4. **查看当前票据信息** 获取票据后,用户可以使用 `klist` 命令查看当前有效的 Kerberos 票据信息: ```bash klist ``` 输出示例如下: ``` Ticket cache: FILE:/tmp/krb5cc_0 Default principal: user@example.com Valid starting Expires Service principal 2023-10-01 10:00:00 2023-10-01 20:00:00 krbtgt/EXAMPLE.COM@EXAMPLE.COM ``` 该信息可用于确认票据是否成功获取及其有效期[^2]。 ##### 5. **删除票据** 用户可以通过 `kdestroy` 命令清除当前票据缓存,以结束 Kerberos 会话: ```bash kdestroy ``` 执行后,所有已获取的票据将被删除,用户需重新执行 `kinit` 才能获取新的凭证。 ##### 6. **Keytab 文件管理** 若需从 Keytab 文件中移除某个主体,可在 `kadmin.local` 工具中执行以下命令: ```bash ktremove -kt /opt/tools/keytabs/test.keytab test/admin@EXAMPLE.COM ``` 该操作将从指定 Keytab 文件中删除指定主体的密钥条目,避免误用或权限泄露[^3]。 #### 应用场景 - **用户登录**:用户在登录系统时使用 `kinit` 获取 TGT,以便访问受 Kerberos 保护的服务,如 Hadoop 集群、LDAP 服务等。 - **服务启动**:服务在启动时通过 `kinit` 获取服务主体的 TGT,使其能够接受来自客户端的 Kerberos 认证请求,实现安全访问控制。 - **自动化脚本**:通过 Keytab 文件与 `kinit` 结合,可以在无需人工干预的情况下完成认证,适用于定时任务、后台服务等场景。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值