OpenSSH + Kerberos SSO:找不到host / localhost.localdomain的密钥表项

SSO不能使用OpenSSH – 我无法使GSSAPIAuthentication与Kerberos一起使用。 每次我尝试login,我不断得到密码提示。

在故障排除期间,我发起了一个debugging:

[foster@kvm0007 ~]$ kinit Password for [email protected]: [foster@kvm0007 ~]$ ssh -p222 -K foster@kerberos.monzell.com -vvv OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010 debug1: Reading configuration data /home/users/foster/.ssh/config debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug2: ssh_connect: needpriv 0 debug1: Connecting to kerberos.monzell.com [192.168.15.100] port 222. debug1: Connection established. debug1: identity file /home/users/foster/.ssh/identity type -1 debug1: identity file /home/users/foster/.ssh/id_rsa type -1 debug3: Not a RSA1 key file /home/users/foster/.ssh/id_dsa. debug2: key_type_from_name: unknown key type '-----BEGIN' debug3: key_read: missing keytype debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug3: key_read: missing whitespace debug2: key_type_from_name: unknown key type '-----END' debug3: key_read: missing keytype debug1: identity file /home/users/foster/.ssh/id_dsa type 2 debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3 debug1: match: OpenSSH_5.3 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_5.3 debug2: fd 3 setting O_NONBLOCK debug1: SSH2_MSG_KEXINIT sent debug3: Wrote 792 bytes for a total of 813 debug1: SSH2_MSG_KEXINIT received debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-rsa,ssh-dss debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected] debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected] debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: none,[email protected],zlib debug2: kex_parse_kexinit: none,[email protected],zlib debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 debug2: kex_parse_kexinit: ssh-rsa,ssh-dss debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected] debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected] debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 debug2: kex_parse_kexinit: none,[email protected] debug2: kex_parse_kexinit: none,[email protected] debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: debug2: kex_parse_kexinit: first_kex_follows 0 debug2: kex_parse_kexinit: reserved 0 debug2: mac_setup: found hmac-md5 debug1: kex: server->client aes128-ctr hmac-md5 none debug2: mac_setup: found hmac-md5 debug1: kex: client->server aes128-ctr hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug3: Wrote 24 bytes for a total of 837 debug2: dh_gen_key: priv key bits set: 132/256 debug2: bits set: 499/1024 debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug3: Wrote 144 bytes for a total of 981 debug3: put_host_port: [192.168.15.100]:222 debug3: put_host_port: [kerberos.monzell.com]:222 debug3: check_host_in_hostfile: filename /home/users/foster/.ssh/known_hosts debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts debug3: check_host_in_hostfile: filename /home/users/foster/.ssh/known_hosts debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts debug1: checking without port identifier debug3: check_host_in_hostfile: filename /home/users/foster/.ssh/known_hosts debug3: check_host_in_hostfile: match line 1 debug3: check_host_in_hostfile: filename /home/users/foster/.ssh/known_hosts debug3: check_host_in_hostfile: match line 1 debug1: Host 'kerberos.monzell.com' is known and matches the RSA host key. debug1: Found key in /home/users/foster/.ssh/known_hosts:1 debug1: found matching key w/out port debug2: bits set: 505/1024 debug1: ssh_rsa_verify: signature correct debug2: kex_derive_keys debug2: set_newkeys: mode 1 debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug3: Wrote 16 bytes for a total of 997 debug2: set_newkeys: mode 0 debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug3: Wrote 48 bytes for a total of 1045 debug2: service_accept: ssh-userauth debug1: SSH2_MSG_SERVICE_ACCEPT received debug2: key: /home/users/foster/.ssh/identity ((nil)) debug2: key: /home/users/foster/.ssh/id_rsa ((nil)) debug2: key: /home/users/foster/.ssh/id_dsa (0x7fed559e5d30) debug3: Wrote 64 bytes for a total of 1109 debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug3: start over, passed a different list publickey,gssapi-keyex,gssapi-with-mic,password debug3: preferred gssapi-with-mic,publickey,keyboard-interactive,password debug3: authmethod_lookup gssapi-with-mic debug3: remaining preferred: publickey,keyboard-interactive,password debug3: authmethod_is_enabled gssapi-with-mic debug1: Next authentication method: gssapi-with-mic debug3: Trying to reverse map address 192.168.15.100. debug2: we sent a gssapi-with-mic packet, wait for reply debug3: Wrote 96 bytes for a total of 1205 debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug2: we sent a gssapi-with-mic packet, wait for reply debug3: Wrote 96 bytes for a total of 1301 debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug2: we sent a gssapi-with-mic packet, wait for reply debug3: Wrote 96 bytes for a total of 1397 debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug2: we sent a gssapi-with-mic packet, wait for reply debug3: Wrote 96 bytes for a total of 1493 debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug2: we did not send a packet, disable method debug3: authmethod_lookup publickey debug3: remaining preferred: keyboard-interactive,password debug3: authmethod_is_enabled publickey debug1: Next authentication method: publickey debug1: Trying private key: /home/users/foster/.ssh/identity debug3: no such identity: /home/users/foster/.ssh/identity debug1: Trying private key: /home/users/foster/.ssh/id_rsa debug3: no such identity: /home/users/foster/.ssh/id_rsa debug1: Offering public key: /home/users/foster/.ssh/id_dsa debug3: send_pubkey_test debug2: we sent a publickey packet, wait for reply debug3: Wrote 528 bytes for a total of 2021 debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug2: we did not send a packet, disable method debug3: authmethod_lookup password debug3: remaining preferred: ,password debug3: authmethod_is_enabled password debug1: Next authentication method: password [email protected]'s password: 

正如你所看到的,gssapi-with-mic正在发送,但是没有可转让的回应。

事实certificate,这似乎正在发送给KDC:

 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: client->server aes128-ctr hmac-md5 none debug1: kex: server->client aes128-ctr hmac-md5 none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST received debug1: SSH2_MSG_KEX_DH_GEX_GROUP sent debug1: expecting SSH2_MSG_KEX_DH_GEX_INIT debug1: SSH2_MSG_KEX_DH_GEX_REPLY sent debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: KEX done debug1: userauth-request for user foster service ssh-connection method none debug1: attempt 0 failures 0 debug1: PAM: initializing for "foster" debug1: PAM: setting PAM_RHOST to "192.168.15.37" debug1: PAM: setting PAM_TTY to "ssh" debug1: userauth-request for user foster service ssh-connection method gssapi-with-mic debug1: attempt 1 failures 0 debug1: Unspecified GSS failure. Minor code may provide more information **No key table entry found for host/[email protected]** debug1: userauth-request for user foster service ssh-connection method gssapi-with-mic debug1: attempt 2 failures 0 debug1: userauth-request for user foster service ssh-connection method gssapi-with-mic debug1: attempt 3 failures 0 debug1: userauth-request for user foster service ssh-connection method gssapi-with-mic debug1: attempt 4 failures 0 debug1: userauth-request for user foster service ssh-connection method publickey debug1: attempt 5 failures 0 debug1: test whether pkalg/pkblob are acceptable debug1: temporarily_use_uid: 502/502 (e=0/0) debug1: trying public key file /home/users/foster/.ssh/authorized_keys debug1: restore_uid: 0/0 debug1: temporarily_use_uid: 502/502 (e=0/0) debug1: trying public key file /home/users/foster/.ssh/authorized_keys2 debug1: restore_uid: 0/0 

一些研究表明这可能是一个与主机文件的问题,我有如下:

 [foster@sl6 ~]$ cat /etc/hosts 127.0.0.1 localhost.localdomain localhost ::1 sl6 localhost6.localdomain6 localhost6 192.168.15.100 kerberos.monzell.com kerberos 192.168.15.100 monzell.com 192.168.15.31 kvm0001.monzell.com kvm0001 

我试图在主机上设置主机名手册,没有任何效果。

以下是KDC的校长名单:

 [root@sl6 ~]# kadmin.local Authenticating as principal rilindo/[email protected] with password. kadmin.local: listprincs K/[email protected] [email protected] host/[email protected] host/[email protected] [email protected] kadmin/[email protected] kadmin/[email protected] kadmin/[email protected] krbtgt/[email protected] [email protected] rilindo/[email protected] [email protected] 

Kerberos执行大部分身份validation。 用户目录驻留在OpenLDAP中。 客户端和服务器都运行Scientific Linux 6.1,客户端作为服务器上的虚拟机运行。

我可以确认Kerberos在OpenSSH之外工作,如下所示:

 [foster@kvm0007 ~]$ /usr/kerberos/bin/krsh -x -PN kerberos.monzell.com This rlogin session is encrypting all data transmissions. Last login: Sun Sep 25 21:18:20 from 192.168.15.37 

有问题的用户有以下sshconfiguration文件:

 [foster@sl6 ~]$ cat .ssh/config GSSAPIAuthentication yes GSSAPIDelegateCredentials yes GSSAPITrustDns yes 

我应该从这个angular度去做什么方向?

编辑:我知道我忘了添加这个职位的东西。 这是服务器上的krb5.conf:

 [root@sl6 ~]# cat /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 = MONZELL.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] MONZELL.COM = { kdc = kerberos.monzell.com admin_server = kerberos.monzell.com } [domain_realm] .monzell.com = MONZELL.COM monzell.com = MONZELL.COM 

并在客户端:

 [rilindo@kvm0007 ~]$ cat /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 = MONZELL.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] EXAMPLE.COM = { kdc = kerberos.example.com admin_server = kerberos.example.com } MONZELL.COM = { kdc = kerberos.monzell.com admin_server = kerberos.monzell.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM monzell.com = MONZELL.COM .monzell.com = MONZELL.COM 

可能是简单的主机名问题或域领域映射问题。
(这可能是第一个,但为了完整性,这两个都是。)

主机名问题
hostname -f在kerberos.monzell.com上
应该返回: kerberos.monzell.com
不应该返回: localhost.localdomain

域领域映射问题
dig -t txt _kerberos.kerberos.monzell.com
dig -t txt _kerberos.monzell.com

如果你不想使用/etc/krb5.conf应该返回
<record> <ttl num> IN TXT "MONZELL.COM".

但是,给定主机文件可能不是这种情况。
/etc/krb5.conf应该包含:

[domain_realm]
.monzell.com MONZELL.COM

要么

[domain_realm]
kerberos.monzell.com MONZELL.COM