标签: kerberos

公钥认证 + Kerberos

我已经设置了公钥身份验证以启用SSH连接到我的大学机器。但是,它只让我登录到本地机器,并没有给我访问我的网络文件夹所需的 Kerberos 凭据。这会导致 git 等工具出现问题。

有没有办法让我在连接时自动获取 Kerberos 凭据SSH而无需输入我的 Kerberos 密码?

我的客户端机器是 OSX 10.6,我的大学机器是 Ubuntu 12.04

ssh openssh kerberos

6
推荐指数
1
解决办法
2732
查看次数

KrbException: 无法创建凭据。(63) - 没有服务信用

我正在使用 Oracle Java 1.8.0_91-b14(不是openjdk)在 Ubuntu 16.04 上设置 Tomcat 8.0.35,以便在对我们的 Microsoft SQL 数据库进行身份验证时使用 Kerberos 身份验证。我遇到的问题是,在kinit使用适当的开关以适当的用户身份运行后:

sudo -u tomcat8 kinit -k -t /etc/tomcat8/tomcat8.keytab HTTP/linux-test2.our.domain.local@OUR.DOMAIN.LOCAL
Run Code Online (Sandbox Code Playgroud)

我在 Tomcat 的 localhost 日志中收到此错误:

Caused by: GSSException: No valid credentials provided (Mechanism level: Fail to create credential. (63) - No service creds)
Caused by: KrbException: Fail to create credential. (63) - No service creds
Run Code Online (Sandbox Code Playgroud)

当我跑

sudo -u tomcat8 klist
Run Code Online (Sandbox Code Playgroud)

我得到了预期的回应:

root@linux-test2:/home/tbourne# sudo -u tomcat8 klist
Ticket cache: FILE:/tmp/krb5cc_111
Default principal: HTTP/linux-test2.our.domain.local@OUR.DOMAIN.LOCAL

Valid starting …
Run Code Online (Sandbox Code Playgroud)

linux kerberos sql tomcat

6
推荐指数
1
解决办法
3589
查看次数

如何在 CentOS 7 上清除用户缓存的 Active Directory 密码?

我在公司的笔记本电脑上安装了 CentOS 7,并将其配置为对公司 AD 服务器进行身份验证,如下所示:

一切正常。...直到我在 Windows 10 PC 上更改了密码。事实上,CentOS 盒子是让我,但只是用密码。我已经做了一堆谷歌搜索和尝试了一堆东西(例如sss_cache -Ekdestroy -A),但我似乎无法刷新缓存,所以我可以用我的密码。

那么,如何在 CentOS 7 上清除用户缓存的 …

active-directory ldap centos kerberos sssd

6
推荐指数
1
解决办法
1万
查看次数

Java 无法从 Linux 客户端的缓存中获取 TGT

我已经在 RHEL5.5 中设置了 Kerberos 服务器和 OpenLDAP。我还有一台 RHEL6 机器作为客户端。我已经运行了我的 Java 程序,jaas用于从 Linux 客户端查询 OpenLDAP 服务器。

如果将客户端的密钥表复制到客户端计算机并使用以下配置选项,则可以查询 OpenLDAP 服务器:

principal=wpingli
useKeyTab=true
keyTab="/home/wpingli/ker/java/wpingli_new.keytab";
Run Code Online (Sandbox Code Playgroud)

如果提示我输入用户/密码,我也可以查询 OpenLDAP 服务器。这让我相信我的环境没问题。

但是,如果我在以下之后运行 Java 程序,则无法查询服务器kinit

klist
[wpingli@pli java]$ klist
Ticket cache: FILE:/tmp/krb5cc_500
Default principal: wpingli@XX.COM
Valid starting Expires Service principal
10/20/11 16:18:06 10/21/11 16:18:02 krbtgt/XX.COM@XX.COM

jaas configuration
GssExampleSUN{
com.sun.security.auth.module.Krb5LoginModule required
client=true
debug=true
doNotPrompt=true
useTicketCache=true
ticketCache="/tmp/krb5cc_500";
};

Exception:
Debug is true storeKey false useTicketCache true useKeyTab false doNotPrompt true ticketCache is /tmp/krb5cc_500 isInitiator true KeyTab is …
Run Code Online (Sandbox Code Playgroud)

java kerberos openldap

5
推荐指数
1
解决办法
2万
查看次数

了解 Kerberized NFSv4 授权

文章如这一个似乎指出Kerberizing NFS(V4)坐骑不仅可以防止机器没有一个Kerberos服务票证从安装的共享目录,而且使用用户的Kerberos票据上的共享文件授权用户操作。

我引用相关部分:

在 NFSv4 之前,NFS 上的安全性几乎不存在。您可以防止未经授权的机器连接到 NFS 导出,但必须依靠系统之间相同的用户 ID 映射来使用服务器的权限来充分保护文件。以这种方式使用 Kerberos 使 NFS 比以前更安全。

我无法理解的是以下场景,这似乎与此声明相矛盾:

# mount /share #succeeds because I have a service ticket in my keytab
$ klist
klist: No credentials cache found (ticket cache FILE:....)
$ ls /share
ls: cannot access /share: Permission Denied
$ kinit
Password for joe@MYREALM:
$ ls /share
contents of share
Run Code Online (Sandbox Code Playgroud)

到目前为止一切顺利,但是当我这样做时:

$ kdestroy
$ ls /share
contents of share
Run Code Online (Sandbox Code Playgroud)

这里发生了什么事?即使我没有 Kerberos 凭据,我也能够访问 NFS 挂载点。这种行为是预期的还是我的安装配置错误?

信息

  1. 在 Debian Wheezy 7.0 …

nfs kerberos

5
推荐指数
1
解决办法
3292
查看次数

如何自动化 ktutil 以立即列出 keytab 条目?

ktutil在 Linux 上经常使用 MIT ,但我厌倦了使用以下序列,即使命令快捷方式和文件名补全可以提供帮助:

ktutil
rkt my.keytab
l
Run Code Online (Sandbox Code Playgroud)

没有办法从 shell 以“一行”的方式获得相同的结果吗?使用别名、函数还是仅使用其他工具?

shell kerberos

5
推荐指数
1
解决办法
4968
查看次数

通过 SSH 使用 Kerberos 登录时 oddjob_mkhomedir 不运行

我目前有一台具有 Kerberos/SSSD/Samba 的服务器来对 Windows 2012 AD 进行身份验证。

/etc/pam.d/system-authoddjob_mkhomedir 中设置如下:

session     optional      pam_oddjob_mkhomedir.so umask=0077 skel=/etc/skel
Run Code Online (Sandbox Code Playgroud)

这是通过运行设置的authconfig --enablesssdauth --enablesssd --enablemkhomedir --update

但是,当使用 AD 帐户通过 SSH 登录时,不会创建主目录,并且用户只是以 root 身份结束,/bin/sh而不是/bin/bash.

错误日志中没有任何内容表明 sssd 未按预期运行或 PAM 模块未被调用。

配置复制如下:

/etc/ssh/ssh_config

Port 22
ListenAddress x.x.x.x
Protocol 2
SyslogFacility AUTHPRIV
PermitRootLogin yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
KerberosAuthentication yes
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL …
Run Code Online (Sandbox Code Playgroud)

ssh centos kerberos sssd

5
推荐指数
2
解决办法
1万
查看次数

使用 SSH 别名时,为什么 SSH 会忽略我的(有效)Kerberos 票证?

我使用 Kerberos 票证身份验证通过 ssh 成功连接到我大学的网络。正常、详细的操作(kinit 票证,然后 ssh user@hostname)工作正常。

问题

~/.ssh/config但是,在文件中设置 ssh 别名时,ssh 完全忽略 Kerberos 并提示我输入密码。(请参阅下面的调试输出。)

为什么是这样?我如何配置它以使用 Kerberos?

注意:在尝试使用 ssh 别名之前和之后,使用 Kerberos 的正常 ssh 操作继续工作。此外,当提供登录密码时,ssh 别名可以按预期工作。

(系统: Mac OS 10.11.4, Darwin Kernel Version 15.4.0, OpenSSH_6.9p1, LibreSSL 2.1.8, Kerberos 5 release 1.7)

调试输出

从 CL 运行 SSH 时,我添加-vvv了详细的调试信息,然后对输出进行了比较。我已经包括了显着不同的部分。

$ ssh -vvv [ssh-alias]

debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup password
debug3: remaining preferred: ,keyboard-interactive,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
atmills@login.engin.umich.edu's password:
debug2: we sent a password packet, wait …
Run Code Online (Sandbox Code Playgroud)

ssh alias kerberos

5
推荐指数
1
解决办法
2057
查看次数

NFS + Kerberos:挂载时服务器拒绝访问

我已按照此处所述配置 NFS&Kerberos:如何在 Red Hat Enterprise Linux 7 上配置 Kerberos NFS 服务器

所有诊断操作都很好,但是当我尝试在客户端安装我的共享时,我收到以下消息:

mount.nfs4: access denied by server while mounting kdc.example.com:/var/backup
Run Code Online (Sandbox Code Playgroud)

服务器和客户端的 IP 都在 /etc/hosts(服务器和客户端机器)中,首先是 IP 之后。我的配置是:

/etc/krb5.conf

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = EXAMPLE.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[realms]
 EXAMPLE.COM = {
  kdc = kdc.example.com
  admin_server = kdc.example.com
 }

[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM
Run Code Online (Sandbox Code Playgroud)

/etc/出口:

/var/backup client.example.com(rw,sync,no_wdelay,nohide,no_subtree_check,no_root_squash,sec=krb5)
/mnt/storage client.example.com(rw,sync,no_wdelay,nohide,no_subtree_check,no_root_squash,sec=krb5) …
Run Code Online (Sandbox Code Playgroud)

nfs kerberos

5
推荐指数
1
解决办法
1万
查看次数

如何对 HTTP 代理使用身份验证和协商(例如 Kerberos)?

一般接受的是使用HTTP_PROXY/HTTPS_PROXY环境变量来指定代理服务器的使用。身份验证可以包含在该 URL 中,例如HTTP_PROXY=http://user:pass@myproxy.mydomain.tld:3128/

但是,我使用 Kerberos SSO 通过代理进行身份验证。我该如何配置呢?因此,假设 Squid 代理服务器配置如下所述: https: //wiki.squid-cache.org/ConfigExamples/Authenticate/Kerberos。它描述了 Windows 客户端如何通过协商使用代理身份验证,但没有信息如何配置 Linux/Unix 客户端。

对于 cURL,使用--proxy-negotiate -u :可以解决问题,例如:

HTTPS_PROXY=http://myproxy.mydomain.tld:3128/ curl --proxy-negotiate -u : https://www.google.com
Run Code Online (Sandbox Code Playgroud)

如何告诉非 cURL 应用程序使用此机制?例如 Debian/Ubuntu APT 带有Acquire::http::Proxy "http://myproxy.mydomain.tld:3128/";?

我发现cntlm充当中间另一个本地运行的代理,促进来自本地主机的未经身份验证的连接。但是,这仅适用于 NTLM,而我需要 Kerberos。Squid 是否能够使用 Kerberos 作为客户端进行连接?众所周知,在代理服务器的传出连接上找到身份验证功能似乎非常困难。所有这些似乎都集中在侦听套接字上的身份验证功能上。

http-proxy proxy http squid kerberos

5
推荐指数
0
解决办法
1万
查看次数

标签 统计

kerberos ×10

ssh ×3

centos ×2

nfs ×2

sssd ×2

active-directory ×1

alias ×1

http ×1

http-proxy ×1

java ×1

ldap ×1

linux ×1

openldap ×1

openssh ×1

proxy ×1

shell ×1

sql ×1

squid ×1

tomcat ×1