linux – Kerberos如何使用SSH?

假设我有四台计算机,笔记本电脑,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接受.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


查找全部容器的日志文件 $ sudo find /var/lib/docker/containers -name *.log 查看日志位置 $ docker inspect --format='{{.LogPath}}' <container_name> 实时查询内容 $
Linux日志文件中列属性的详细解析
在Linux系统中没有duf命令,如何有效地管理磁盘空间?
深入探讨EncryptPad在Linux操作系统中的功能和优势
原理和应用场景:Linux中ttyload工具的工作原理和实际用途
深度解析SELinux的三种策略类型
评估Linux系统性能的ttyload工具使用效果
分享在Linux系统中检测SSH版本的方法
介绍Linux平台上的数据加密工具EncryptPad
在Linux系统中,如何查看和诊断块设备信息?
在Linux环境下如何查看块设备信息?
探索Linux操作系统下的数据加密工具EncryptPad
学会在Linux系统中查看硬盘信息
分析SELinux:原理与实践
掌握SELinux策略类别
技巧:有效解读和管理Linux日志文件
查看Linux系统中的所有用户
了解Linux系统中各种不同类型的日志文件
深入理解Linux PS命令
方法:在Linux操作系统中查看用户