Problem with kerberos and ssh.
Douglas E. Engert
deengert at anl.gov
Wed Mar 1 16:03:54 EST 2006
As many others have pointed out, it looks like you are trying to
use a buggy version of a gssapi mechglue. There are versions that
do actually work, such as the UIUC
http://grid.ncsa.uiuc.edu/gssapi-mechglue/
or the Solaris 10 version.
The mechglue version that has comes with the MIT Kerberos for many
releases has not received much attention, and I have never heard
of it being tested with any other GSSAPI. (Thus the UIUC version)
Eric wrote:
> I have reached the conclusion that this is an ssh bug and not a
> kerberos bug or configuration problem.
>
> Essentially the problem was that ssh is calling
>
> ctx->major = gss_accept_sec_context(&ctx->minor,
> &ctx->context, ctx->creds, recv_tok,
> GSS_C_NO_CHANNEL_BINDINGS, &ctx->client, &mech,
> send_tok, flags, NULL, &ctx->client_creds);
>
> and saving off ctx->client for later use. Under the hood, ctx->client
> is simply a gss_union_name_t.
>
> Later on, ssh calls
>
> if ((ctx->major = gss_export_name(&ctx->minor, ctx->client,
> &ename))) {
> ssh_gssapi_error(ctx);
> return (ctx->major);
> }
>
> Here ctx->client is passed in and gss_export_name assumes that the input
> name is a krb5_principal. Not surprisingly, the datatype mismatch
> causes the call to fail. Could have caused it to crash, I suppose -
> that would have been a much clearer indication of what the trouble was.
>
> I honestly have no clue how this could have ever have worked - my guess
> is that at one point in the past libgssapi didn't have the
> gss_union_name_t, and just used krb5_principal as a return parameter
> from gss_accept_sec_context(). Anyways, I hacked the thing and got it
> working which is good enough for me now - I will post this information
> over at the openssh mailing list to see what they think.
>
>
> Eric wrote:
>
>>I am trying to get kerberos working in a small test environment. I am
>>using a Windows Server 2003 as a KDC, and two Linux boxes as clients.
>>The two linux boxes are Suse 10 and are virtual clones of each other.
>>
>>I followed instructions I found on the web and was able to configure the
>>Linux boxes to be Kerberos clients - I am able to log into both of them
>>and use kerberos for authentication.
>>
>>To take it to the next level, I downloaded and built openssh-4.3p2 on
>>both Linux boxes, and then I try and connect from one machine to the
>>other. It looks like the connection is virtually complete, and then it
>>finds something it doesn't like and then tears the whole thing down.
>>
>>Right now I am at a bit of a loss - I don't know what the client
>>credentials are that the thing is talking about, nor do I know what type
>>of invalid name might have been supplied. In particular, I don't know
>>whether this is a Kerberos configuration issue, or a ssh issue.
>>
>>The client does seem to be able to get a host ticket for the remote
>>machine:
>>
>>vatester at babel-vm-suse:/home/eric/bin2> klist -e
>>Ticket cache: FILE:/tmp/krb5cc_1006
>>Default principal: vatester at VADEV.COM
>>
>>Valid starting Expires Service principal
>>02/25/06 08:27:21 02/25/06 18:27:21 krbtgt/VADEV.COM at VADEV.COM
>> renew until 02/26/06 08:27:21, Etype (skey, tkt): DES cbc mode
>>with RSA-MD5, DES cbc mode with RSA-MD5
>>02/25/06 08:27:45 02/25/06 18:27:21
>>host/babel-vm-suse2.vadev.com at VADEV.COM
>> renew until 02/26/06 08:27:21, Etype (skey, tkt): DES cbc mode
>>with RSA-MD5, DES cbc mode with RSA-MD5
>>
>>=== the host keytabs were generated on w2k3 with the command line ===
>>ktpass /out vadev.keytab /mapuser babel-vm-suse /princ
>>host/babel-vm-suse.vadev.com at VADEV.COM /pass welcome /crypto DES-CBC-MD5
>>/ptype KRB5_NT_PRINCIPAL /mapOp set +desonly /target vadevdc
>>
>>ktpass /out vadev2.keytab /mapuser babel-vm-suse2 /princ
>>host/babel-vm-suse2.vadev.com at VADEV.COM /pass welcome /crypto
>>DES-CBC-MD5 /ptype KRB5_NT_PRINCIPAL /mapOp set +desonly /target vadevdc
>>
>>=== client commandline ===
>>ssh -v -v -v -o GSSAPIAuthentication=yes -p 16 babel-vm-suse2.vadev.com
>>
>>=== server commandline ===
>>sshd -e -d -d -d -D -r -p 16 -f /home/eric/bin2/sshd_config
>>
>>=== server config ===
>># Kerberos options
>>KerberosAuthentication yes
>>#KerberosOrLocalPasswd yes
>>#KerberosTicketCleanup yes
>>#KerberosGetAFSToken no
>>
>># GSSAPI options
>>GSSAPIAuthentication yes
>>#GSSAPICleanupCredentials yes
>>
>>=== client log ===
>>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
>>debug2: we sent a gssapi-with-mic packet, wait for reply
>>Connection closed by 10.18.3.53
>>
>>=== server log ===
>>debug1: userauth-request for user vatester service ssh-connection method
>>gssapi-with-mic
>>debug1: attempt 1 failures 1
>>debug2: input_userauth_request: try method gssapi-with-mic
>>Postponed gssapi-with-mic for vatester from 10.18.3.52 port 1960 ssh2
>>debug1: Got no client credentials
>>debug1: An invalid name was supplied
>>A parameter was malformed
>>Validation error
>>
>>Couldn't convert client name
>>debug1: do_cleanup
>
> ________________________________________________
> Kerberos mailing list Kerberos at mit.edu
> https://mailman.mit.edu/mailman/listinfo/kerberos
>
>
--
Douglas E. Engert <DEEngert at anl.gov>
Argonne National Laboratory
9700 South Cass Avenue
Argonne, Illinois 60439
(630) 252-5444
More information about the Kerberos
mailing list