使用带有 Kerberos 的 OpenSSH

某些初始设置需要使用带有 Kerberos 的 OpenSSH。

以下步骤提供了关于为使用带有 Kerberos 的 OpenSSH 所需的初始设置的信息:

  1. 在您的 OpenSSH 客户机和服务器上,/etc/krb5.conf 文件必须存在。 该文件告诉 Kerberos 使用哪个 KDC、给每个凭单的生命期多长,等等。 以下是一个 krb5.conf 示例文件:
    
    [libdefaults]
    ticket_lifetime = 600
    default_realm = OPENSSH.AUSTIN.XYZ.COM
    default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc
    default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc
     
    [realms]
    OPENSSH.AUSTIN.xyz.COM = {
        kdc = kerberos.austin.xyz.com:88
        kdc = kerberos-1.austin.xyz.com:88
        kdc = kerberos-2.austin.xyz.com:88
        admin_server = kerberos.austin.xyz.com:749
        default_domain = austin.xyz.com
    }
     
    [domain_realm]
        .austin.xyz.com = OPENSSH.AUSTIN.XYZ.COM
        kdc.austin.xyz.com = OPENSSH.AUSTIN.XYZ.COM
    
  2. 同时,您必须把以下 Kerberos 服务添加到每个客户机的 /etc/services 文件中:
    kerberos      88/udp    kdc    # Kerberos V5 KDC
    kerberos      88/tcp    kdc    # Kerberos V5 KDC
    kerberos-adm  749/tcp          # Kerberos 5 admin/changepw
    kerberos-adm  749/udp          # Kerberos 5 admin/changepw
    krb5_prop     754/tcp          # Kerberos worker 
                                   #  propagation
    
  3. 如果 KDC 使用 LDAP 作为注册表来存储用户信息,请阅读 LDAP 认证装入模块和 Kerberos 出版物。 另外,请确保执行了以下操作:
    • KDC 正在运行 LDAP 客户机。 您可以用 secldapclntd 命令启动 LDAP 客户机守护程序。
    • LDAP 服务器正在运行 slapd LDAP 服务器守护程序。
  4. 在 OpenSSH 服务器上,编辑 /etc/ssh/sshd_config 文件以包含以下行:
    KerberosAuthentication yes
    KerberosTicketCleanup yes
    GSSAPIAuthentication yes
    GSSAPICleanupCredentials yes
    UseDNS yes
    如果将 UseDNS 设置为 Yes,那么 ssh 服务器将进行逆向主机查询以查找连接的客户机的名称。 当使用基于主机的认证或当您希望最新登录信息显示主机名而非 IP 地址时,这是必需的。
    注: 某些 ssh 会话在执行逆向名称查找时停止,因为无法访问 DNS 服务器。 如果发生这种情况,您可以通过将 UseDNS 设置为 no来跳过 DNS 查找。 如果未在 /etc/ssh/sshd_config 文件中显式设置 UseDNS ,那么缺省值为 UseDNS yes
  5. 在 SSH 服务器上,运行 startsrc -g ssh 命令以启动 ssh 服务器守护程序。
  6. 在 SSH 客户机上,运行 kinit 命令以获得初始凭证 (TGT)。 可以通过运行 klist 命令来验证是否接收到了 TGT。 这将显示属于您的所有凭证。
  7. 通过运行 ssh username@servername 命令来连接到服务器。
  8. 如果正确配置了 Kerberos 以认证用户,那么将不会显示要求密码的提示,且用户将自动登录到 SSH 服务器。