加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – Kerberos如何使用SSH?

发布时间:2020-12-13 18:33:45 所属栏目:Linux 来源:网络整理
导读:假设我有四台计算机,笔记本电脑,Server1,Server2,Kerberos服务器: 我使用PuTTY或SSH从L到S1登录,提供我的用户名/密码 从S1我然后SSH到S2. Kerberos对我进行身份验证时无需密码 描述所有重要的SSH和KRB5协议交换:“L发送用户名到S1”,“K发送…到S1”等. (
假设我有四台计算机,笔记本电脑,Server1,Server2,Kerberos服务器:

>我使用PuTTY或SSH从L到S1登录,提供我的用户名/密码
>从S1我然后SSH到S2. Kerberos对我进行身份验证时无需密码

描述所有重要的SSH和KRB5协议交换:“L发送用户名到S1”,“K发送…到S1”等.

(此问题旨在进行社区编辑;请为非专业读者改进.)

解决方法

首次登录:

> L向S1发送用户名和SSH认证请求
> S1返回可用的SSH身份验证机制,其中“password”作为其中之一
> L选择“密码”并将普通密码发送到S1
> S1为PAM堆栈提供用户名和密码.
>在S1上,PAM(通常是pam_krb5或pam_sss)从Kerberos KDC请求TGT(票证授予票证).

> S1获得TGT.

>旧样式(没有preauth):S1发送AS-REQ并接收包含TGT的AS-REP.
>新样式(带有preauth):S1使用您的密码加密当前时间戳,并将其附加到AS-REQ.服务器解密时间戳并验证它是否在允许的时间偏差内;如果解密失败,则立即拒绝密码.否则,在AS-REP中返回TGT.

> S1尝试使用密码生成的密钥解密TGT.如果解密成功,则接受密码为正确.
> TGT存储到新创建的凭证缓存中. (您可以检查$KRB5CCNAME环境变量以查找ccache,或使用klist列出其内容.)

> S1使用PAM执行授权检查(取决于配置)并打开会话.

>如果在授权阶段调用pam_krb5,它会检查是否存在?/ .k5login.如果是,则必须列出客户端Kerberos主体.否则,唯一允许的主体是username @ DEFAULT-REALM.

第二次登录:

> S1向S2发送用户名和SSH authn请求
> S2返回可用的auth mechs,其中一个是“gssapi-with-mic”1
> S1通过向TGC发送带有TGT的TGS-REQ并从其接收带有服务票据的TGS-REP来请求host/s2.example.com@EXAMPLE.COM的票证.
> S1生成“AP-REQ”(认证请求)并将其发送到S2.
> S2尝试解密请求.如果成功,则完成身份验证. (PAM不用于身份验证.)

>其他协议(如LDAP)可以选择使用请求中包含的“会话密钥”加密进一步的数据传输;但是,SSH已经协商了自己的加密层.

>如果身份验证成功,S2使用PAM执行授权检查并打开会话,与S1相同.
>如果启用了凭证转发且TGT具有“可转发”标志,则S1请求用户TGT的副本(设置了“转发”标志)并将其发送到S2,并将其存储到新的ccache.这允许递归Kerberos身份验证登录.

请注意,您也可以在本地获取TGT.在Linux上,您可以使用kinit执行此操作,然后使用ssh -K进行连接.对于Windows,如果您登录到Windows AD域,Windows会为您执行此操作;否则,可以使用MIT Kerberos. PuTTY 0.61支持同时使用Windows(SSPI)和MIT(GSSAPI),但您必须手动启用转发(委派).

1 gssapi-keyex也是可能的,但未被官方OpenSSH接受.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读